2012-01-15 15 views
0

TableViewからIOSアプリケーションのViewControllerにオブジェクトを渡すときに問題が発生します。私はストーリーボードを使用しており、ARCを選択して、私の "prepareForSegue"メソッドで代理人を渡しました。ここでprepareForSegueメソッドで代理人を渡す

は別のViewControllerにプッシュ経由segues私のテーブルビューで私のコードです:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    NextViewController *vc = (NextViewController *)[segue destinationViewController]; 

    vc.managedObjectContext = managedObjectContext; 

    if ([[segue identifier] isEqualToString:@"EditCategory"]) 
    { 

    NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row]; 

    // I get a red warning which states "Cast of 'NSInteger' (aka 'int') to 'Entity' is disallowed with ARC" on this line: 
    [vc setEntity:(Entity *)selectedIndex]; 
    } 
} 

誰もが、私はテーブルビューからのViewControllerに私のオブジェクトを渡すことができる方法のための任意の提案を持っていますか?私はプログラミングには慣れていないし、いろいろな表現を試しましたが、何も動かないようです。

答えて

1

エラーはタイプと関係があります。

クラスNextViewControllerは、タイプEntity *のオブジェクトを取る-setEntity:というメソッドを持っているようです。エラーは、-setEntity:に間違った型の引数を指定しようとしているためです。 NSInteger(0,5、-999のような数字です)を入力しようとしていますが、Entityが必要です。

テーブルビューからNextViewControllerにデータを渡すには適切な道があります。あなたは、次のいずれかを実行する必要があります。

  • -setEntity:Entityを渡す(おそらく EntityクラスはNSIntegerを取るコンストラクタを持っていない?)
  • NSIntegerを取るNextViewControllerにメソッドを追加し、その代わりに電話する-setEntity:
+0

正しい方向に私を指してくれてありがとう。私はプロトコル/デリゲートメソッドを実装しようとしていますが、私のmanagedObjectは "null"になります。私はどのView Controllerが実際にmanagedObjectを渡しているかを決定するのが難しいと思います。 ViewController上のピッカーの結果は、単にTableViewControllerに表示されます。私は、ViewControllerからTableViewControllerへmanagedObjectを片方向だけ渡す必要がありますか?または、managedObjectを両方向に渡す必要がありますか? – PopUp

関連する問題