2012-04-06 8 views
1

ここでは何か基本的なものがありません。ビューコントローラ間で辞書を渡す

私は、各セルがNSDictionaryの内容を表示しているテーブルビューを持っています。各セルをタップすると、同じ辞書の詳細を表示する新しいView Controllerにセグメンテーションしたいと思います。

しかし、私は辞書を通過しようとするたびに、コンテンツは反対側ではnullです。ここで

は、私のテーブルビューを含むビューコントローラにセグエの準備です:予想通り

-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"tableSegue"]){ 

     MODetailViewController *detailViewController = [[MODetailViewController alloc] init]; 

     NSIndexPath *selectedIndexPath = [self.monetiseTable indexPathForSelectedRow]; 
     int selectedIndexPathAsInteger = selectedIndexPath.row; 

     NSDictionary *dictionaryToPass = [[NSDictionary alloc] initWithDictionary:[self.feedArray objectAtIndex:selectedIndexPathAsInteger]]; 

     NSLog(@"%@", dictionaryToPass); 

     detailViewController.passedDictionary = dictionaryToPass; 
    } 
} 

のNSLogは、辞書が表示されます。

今、ディテール・ビュー・コントローラ・ヘッダにIは(iはARCを使用している)プロパティを宣言した:

viewWillAppearで今
@property (weak, nonatomic) NSDictionary *passedDictionary; 

-(void)viewWillAppear:(BOOL)animated{ 

[super viewWillAppear:YES]; 

NSLog(@"%@", self.passedDictionary); 
} 

のNSLogがnull返します!

私はそれを合成しました。

私には何か基本的なものがありません。どんな助け?代わりにweak

答えて

2
@property (weak, nonatomic) NSDictionary *passedDictionary; 

、それstrongを宣言します。

これにより、ディクショナリがdeallocされないようにします。

幸運を祈る!

+0

ありがとうございました。それは私が本当の読書を保持、コピー、割り当て、弱い、強いなどに持っていた頃です! –

+0

がpassedDictionaryを強く宣言している場合は、detailviewcontrollerが割り当て解除されないことがあります。 – iKT

2

新しいMODetailViewControllerを割り当てないでください。 Segueパラメータで宛先コントローラとして渡されたものを使用します。

+0

正解ではありませんでしたが、パスのものは+1 –

関連する問題