2012-04-05 1 views
0

現在、私は次のメソッドを持っているが、それはかなりの仕事...カスタム表のセルのデータのロードのObjective CのiOS -

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *MyIdentifier = @"cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    if (cell == nil) { 
     [[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:self options:nil]; 
     cell = tvCell; 
     self.tvCell = nil; 
    } 

    UILabel *label; 
    label = (UILabel *)[cell viewWithTag:5]; 
    label.text = [NSString stringWithFormat:@"Hole #%d", indexPath.row]; 

    return cell; 
} 

テーブルビューはエラーなしで作成されますされませんが、個々のセルが含まれています何もありませんが、明らかにTVCell.xibにはタグが5つのラベルがあります。唯一の質問はこれです。私はかなり、Appleがここに与え手順...ペン先のドキュメントウィンドウで

  1. を選択し、ファイルの所有者を理解し、インスペクタのアイデンティティペインを開き、カスタムビューコントローラにファイルの所有者のクラスを設定しないでくださいクラス。

  2. ファイル所有者(カスタムサブクラスのプレースホルダインスタンス)のセルコンセントを、nibファイルドキュメントのテーブルビューセルオブジェクトに接続します。これらの手順がどこにあるか。ここ

は... http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7

で誰かが私のようなnoobのためのこれらの手順を説明していただけますか?私はそれが私が台無しにしたものだと思うが、私は間違ったことをした可能性がある。

+0

おそらく、ゼロでない数の行とセクションを返すことを確認しますか? – user1258240

答えて

1

私はTcCellが自己の財産になるとは思わない。セルキューが空の場合は、代わりにこれを試してください:

if (cell == nil) { 
    cell=[[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:self options:nil]; 
} 
+0

これはまだ動作しません。 –

+0

あなたは正しいです、私はそれをチェックしました。 @jonkrollはもっと正しいバージョンを持っているようです。また、mainBundleを呼び出した後にcell = self.myViewFromNibを書くことができます:これは別のスレッドで提案されています[http://stackoverflow.com/questions/863321/iphone-how-to-load-a-view-using- a-nib-file-made-with-interface-builder] – user1258240

0

あなたが言葉で理解できないと言った手順を説明するのは難しいです。私はそれのための画像やビデオを持ってチュートリアルを探してお勧めします。 (私はすばやい検索をしましたが、利用可能なものがたくさんありましたが、私はあなたにそれらをもっと綿密に読まずにあなたを案内するために1つを選ぶことを本当に望んでいませんでした)。

はしかし、私はこの方法でカスタムテーブルビューのセルを作成することを好む: http://www.mobilesce.com/2011/12/27/the-best-way-to-do-custom-reusable-uitableviewcells/

それはリンゴのドキュメントに記述の方法とは少し違うのですが、私は多くの人々がそれを使用して、私はそれを見つける見てきましたより簡単に。

+0

その例は私のためにはうまくいきません...どこでこれを取得しますか... MenuItem * menuItem = [menuItems_ objectAtIndex:[indexPath row]]; --- "MenuItem"変数タイプとは何ですか? –

+0

MenuItemは、その特定の例のセルを生成するために使用される単なる汎用オブジェクトです。これを削除して、セルのプロパティに必要な値を割り当てることができます。 – Darren

+0

ありがとう、私はそれを働かせましたが、テーブルそのものが今やうんざりしています。最初はテーブルが空に見えますが、スクロールを開始するとテーブルセルがすべての場所から来ます。 –

0

NSBundleメソッドloadNibNamed:owner:options:は、nibファイルのトップレベルオブジェクトを含むNSArrayを返します。これを試してみてください:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
if (cell == nil) { 
    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:self options:nil]; 
    cell = [nibArray objectAtIndex:0]; 
} 
+0

まだ空のtableViewを作成します... –

+0

tableView:cellForRowAtIndexPath:メソッドが実際に呼び出されていることを確認しましたか?ビューコントローラをテーブルビューのデータソースにしましたか? – Darren

関連する問題