2011-12-13 15 views
2

xcode 4.2とストーリーボードを使用してiOSタブ付きアプリケーションを作成しました。xcode 4.2ストーリーボードを使用したiOS Tableview

:行をクリックしたときに、私は私が

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
categoryClass *cc = [datas objectAtIndex:indexPath.row]; 

[tableView deselectRowAtIndexPath:indexPath animated:NO]; 

iSubProducts *subProducts = [[iSubProducts alloc] init]; 
subProducts.title = cc.categoryName; 
subProducts.catID = cc.categoryID; 
[[self navigationController] pushViewController:subProducts animated:YES]; 
[subProducts release]; 


} 

の下に次のコードを使用しますが、私は、行をクリックしたとき、それは私に次のエラーを与え、私は1 tableviewcontrollerを開きたい、その上にカスタムセルで1 tableviewcontrollerを追加しました私は持っている私のiSubProductsのtableviewcontroller上cellForRowAtIndexPath

、:

*キャッチされない例外により 'NSInternalInconsistencyException' にアプリを終了、理由:「のUITableView DataSourceがのtableViewからセルを返す必要があります次のようになります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"myCell2"; 

iSubProductsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

productSubClass *cc = [datas2 objectAtIndex:indexPath.row]; 
NSLog(@"Product Name: %@", cc.productName); 
cell.txtProductName.text = cc.productName; 
cell.txtProductDesc.text = cc.productDesc; 

return cell; 

} 

これはエラーが発生した場所であり、セルはゼロ値を返しています。 iSubProducts tableviewcontrollerをボタンを使用して、またはボタンから接続しようとすると、すべて正常に動作しますが、行がクリックされるとこのエラーが表示されます。

私はiOS開発でかなり新しく、多分カスタムセルを持つtableviewcontrollerからtableviewcontrollerを開いているときにエラーが発生しています。私は今2日間私の頭を抱きしめていて、たくさんのグーグルでグーグルで遊んでいましたが、残念ながら解決策は見つかりませんでした。 iSubProducts tableviewcontrollerには、ボタンからプッシュしようとするとエラーがないことが分かります。私はこの問題に関する助言が必要です。私は今この問題に固執しています。みんなありがとう。

答えて

6

これがどのように有益なことを確認ノート..しかし、ちょうど今日、私はトラブルは、行をクリックした後、別のビューに1つのテーブルビューから移動していた。..

私は完全に離れてDidSelectRowAtIndexPathからとどまりました。代わりに私はセグー(私が目指していたもの)を使いました。

このコードは、Appleのテーブルを使用したスト​​ーリーボードの例です。

http://developer.apple.com/library/ios/#samplecode/SimpleDrillDown/Listings/Classes_RootViewController_m.html#//apple_ref/doc/uid/DTS40007416-Classes_RootViewController_m-DontLinkElementID_10

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) { 
      NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow]; 
      DetailViewController *detailViewController = [segue destinationViewController]; 
      detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row]; 
    } 
} 

このすべては、あなたがストーリーボード機能でseguesの使用を開始し、seguesのための識別子を使用してくださいassumign。

+0

私はこれが正しいと思います。上記のコードの問題は、新しいテーブルビューコントローラが直接割り当てられ、ストーリーボードからロードされないということです。つまり、プロトタイプのセルは使用できません。 seguesを使用してprepareForSegueでターゲットView Controllerを設定すると、これが解決されます。あるいは、ストーリーボードからインスタンス化することもできますが、それは不公平なコードのようです。 – jrturton

+0

うわー、これは、問題を釘付け、ありがとう男!私が言うことができるのはああ私の神です!もう一度ありがとう。 – user1096503

0

セルからデスティネーションビューにセグをドラッグできるように、デザイナで最初にプロトタイプセルを作成するだけです。

関連する問題