2012-02-29 7 views
0

私はストーリーボード形式に変換しているrssパーサーがあり、問題が発生しました。ユーザーがRSSフィードを持つテーブルビューの部分に触れると、それはこのコードの詳細ビューコントローラにビューをプッシュ:XCode 4.2のストーリーボードと互換性があるようにコード行を変換する

- (id)initWithItem:(NSDictionary *)theItem { 
if (self == [super initWithNibName:@"RssDetailController" bundle:nil]) { 
    self.item = theItem; 
    self.title = [item objectForKey:@"title"]; 
} 

return self; 
} 

私はそれを実行すると、私がしようとすると、それが正常に動作しますが、クラッシュ物語を見る。明らかにこれは、私がストーリーボードを使用していたためにペン先がなくなったためですが、コードをどのように変更すればうまくいくのでしょうか?

申し訳ありませんが、私の言葉が悪いです。ご質問や説明が必要な場合は、私のコメントにお答えします

答えて

1

詳細ビューコントローラのカスタムinitメソッドでプロパティ値を設定しようとする代わりに、ストーリーボードのパラダイムでこれを処理する方が良いでしょう。テーブルビューコントローラのprepareForSegue:メソッドを使用してください。

あなたのテーブルビューコントローラから詳細ビューコントローラへのストーリーボードにセグを設定した場合、このメソッドはセグが発生したときに呼び出されます。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{   
    if ([segue.identifier isEqualToString:@"ShowDetail"]) { // be sure to name your segue in storyboard 

     // sender in this case is the tableview cell that was selected 
     UITableViewCell *cell = sender; 

     // get the index path for the selected cell 
     NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 

     // use the indexPath to get the appropriate item from your data source 
     NSDictionary *theItem = [self.dataArray objectAtIndex:[indexPath row]]; // or whatever 

     // get the view controller you are about to segue to 
     RssDetailController *rssDetailvc = [segue destinationViewController]; 

     // set the properties 
     rssDetailvc.item = theItem; 
     rssDetailvc.title = [theItem objectForKey:@"title"]; 
    } 
} 
+0

ありがとうございました。だから、私がこのコードを置き換えた後、私の次のステップは何ですか? – Sam

+0

それはそうでしょう。注意点:1)あなたのテーブルビューコントローラとディテールコントローラの間のストーリーボードにセグを作成していることを確認してください(プロパティインスペクタのセグのIdentifierプロパティを "ShowDetail"に設定してください)。 2)Segueはあなたの詳細ビューのインスタンス化を処理するようになりました。あなたがストーリーボードの到着前にしなければならなかったように、あなたの 'didSelectRowAtIndexPath:'メソッドで何もする必要はありません。 – jonkroll

+0

NSIndexPath * indexPath = [self.tableView indexPathForCell:cell]; NSDictionary * theItem = [self.dataArray objectAtIndex:[インデックスパスの行]];これら2つの行は私にエラーを与えています – Sam

関連する問題