2011-12-06 20 views
0
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"ShowDetail"]) { 
     DetailViewController *detailViewController = [segue destinationViewController]; 

     ListViewCell *cell = (ListViewCell *)sender; 
     Category *category = cell.Category; 
     NSLog(@"cell category = %@", cell.Category.Name); 
     //[detailViewController setCategory:category]; 
     detailViewController.Category = category; 
    } 
} 

NSLogは正しいcell.Category.Nameを明確に示しているため、Categoryオブジェクトは良好です。prepareForSegueが[detailviewcontroller setObject]が呼び出されたときに失敗します

しかし、それはおそらくdetailViewController内のオブジェクトが理解していない

#import "AppDelegate.h" 

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

答えて

0

古いコード:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"ShowDetail"]) { 
     DetailViewController *detailViewController = [segue destinationViewController]; 

     ListViewCell *cell = (ListViewCell *)sender; 
     Category *category = cell.Category; 
     NSLog(@"cell category = %@", cell.Category.Name); 
     //[detailViewController setCategory:category]; 
     detailViewController.Category = category; 
    } 
} 

新しいコード:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"ShowDetail"]) { 
     DetailTabViewController *detailTabViewController = [segue destinationViewController]; 

     ListViewCell *cell = (ListViewCell *)sender; 
     Category *category = cell.Category; 
     NSLog(@"cell category = %@", cell.Category.Name); 
     //[detailViewController setCategory:category]; 
     detailTabViewController = category; 
    } 
} 
0

「1つのプログラムは、信号SIGABRTを受けたスレッド」これはすぐにエラーで次の行で停止し

detailViewController.Category = category; 

この行に失敗しますメッセージsetCategory:。デバッグコンソールにエラーメッセージが表示されます。そうでない場合は、というメッセージをデバッグコンソールに投稿してください。

ところで、プロパティ名(またはメソッド名)を大文字で始めるべきではありません。ややこしい。

+0

これは私がデバッグコンソール で見たものである[UITabBarController setCategory:]:認識されていないセレクタは、インスタンス0x6a100a0に送られます。プロパティ名を小文字に変更します。どういうわけか、最初の文字のキャップが気に入っています – gangt

+0

'detailViewController'は' UITabBarController'を指し、 'UITabBarController'はcategoryプロパティや' setCategory: 'メソッドを持っていません。多分、あなたのセグーは間違った目的地を持っています。 –

+0

統合インターフェースビルダーを使用してアプリケーションを作成するのは今回が初めてです。私の意図は、TabBarControllerをtableviewcellが選択されたときに開くことでした。それは、TabBarビューがうまくいっているが、オブジェクトを渡していないことを示しています。私もUITabBarControllerを継承し、そこにCategoryオブジェクトを追加したviewcontrollerを作成しましたが、私は同じエラーを取得します。 – gangt

関連する問題