2016-07-14 3 views
0

私のSwiftプロジェクトでは、テーブルビューを持つテーブルコントローラビューがあります。テーブルビューは4つのセクションに分割され、すべてのセクションには4つの行があります。現在、各行はテキストフィールドの横にラベルで構成されています。 私の目的は、最初のセクションの行だけがテキストフィールドの横にラベルを持つことです。それどころか、最後の3つのセクションには、行内にラベルだけがあります(テキストフィールドではない)。 お願いします。あなたはすべての行に対して同じセルを使用しているので、それが働いていないSwiftでは、最後の3つのセクションには行内にラベルのみが付いています(テキストフィールドではありません)

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    print("index ", indexPath.section); 

    let cell = tableView.dequeueReusableCellWithIdentifier("tableCell", forIndexPath: indexPath) 
    cell.textLabel?.text = self.items[indexPath.section][indexPath.row]; 

    if(indexPath.section == 0){ 
     let cell = tableView.dequeueReusableCellWithIdentifier("tableCell") as! TextInputTableViewCell 
     cell.configure("", placeholder: "name") 
    } 

    return cell 
} 
+0

各タイプごとにカスタムTableViewCellを作成できます。 – SahandTheGreat

+0

http://shrikar.com/uitableview-and-uitableviewcell-customization-in-swift/ – SahandTheGreat

+0

@Federica - 別のデフォルトセルをelse条件に入れます。うまく動作することを望みます。 –

答えて

1

:私はこの問題に管理するために書いたコードだが、それは働いていない

。 2つの異なる行を定義する必要があります。これを行うには、プロトタイプセルを複数の行に設定します(2つの場合)。

各セルには独自の再利用識別子が必要であり、そのセルはそのテーブルビュー内で一意でなければなりません。

その後で、あなたの tableView(cellForRowAtIndexPath:)あなたが求めることができます。
if indexPath.section == 0 { 
    cell = tableView.dequeueReusableCellWithIdentifier("firstSectionCell", forIndexPath: indexPath) 
    // 
} else { 
    cell = tableView.dequeueReusableCellWithIdentifier("otherSectionCell", forIndexPath: indexPath) 
    // 
} 

はまた、スウィフトにあなたはif文(も、しばらくのために、など)に括弧を使用する必要はありませんので注意してください。だから私はあなたが無意味なのでそれらを削除することをお勧めします。

+0

ベストアンサー!!ありがとう –

0

if(indexPath.section == 0)のブロックに実際にそのブロックの外にスコープがないように見えるので、そこに設定されているプロパティは返されません。 textFieldを削除したいだけで、ラベルを保持したい場合は、textField.hidden = trueを設定することができます。ここで私はそれについてどうやって行くのですか?それをあなたがあなたのtableView内のすべてのセルに同じセルクラスを使用しますが、あなたがそのセクションに基づいて欲しいものを非表示にすることができますこの方法をやって

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("tableCell", forIndexPath: indexPath) as! TextInputTableViewCell 
    cell.textLabel?.text = self.items[indexPath.section][indexPath.row]; 

    if(indexPath.section == 0){ 
     cell.textField.hidden = false //Assumes TextInputTableViewCell's textField property is called "textField" 
     cell.configure("", placeholder: "name") 

    } else { 
     cell.textField.hidden = true //Not in first section we will hide textField 
    } 

    return cell 
} 

関連する問題