2011-12-13 8 views
3

私はストーリーボードxcode 4.2に2つのコントローラー(1番目、2番目)を持っています。iOSデリゲートはperformSegueWithIdentifierと連携していませんか?

最初のコントローラには、tableviewがあり、ナビゲーションコントローラに組み込まれています。 前記第二のコントローラがfirst.hにおいてもテーブルビューを有し、(最初と同じではない)、ナビゲーションコントローラに埋め込ま

first.mで
#import "second.h" 
... 
@interface first : UIViewController <secondDelegate, UITableViewDelegate, UITableViewDataSource> 
... 

- (IBAction)add:(id)sender // action when tapped a button on topbar 
{ 
    [self performSegueWithIdentifier:@"addSegue" sender:sender]; 
} 

.... 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([[segue identifier] isEqualToString:@"addSegue"]) 
    { 
     NSLog(@"delegated"); 
     second *controller=[segue destinationViewController]; 
     controller.delegate=self; 
    } 
} 

- (void)callback 
{ 
    NSLog(@"Callback here"); 
} 

セグエは、Aでありますデフォルトの遷移を持つモーダルセグ。

second.h:

@protocol secondDelegate 
    -(void)callback; 
@end 

.... 

id <secondDelegate> delegate; 
@property (nonatomic,assign) id <secondDelegate> delegate; 

second.m:

... (button of topbar tapped action) ... 
[self dismissModalViewControllerAnimated:YES]; 
NSLog(@"class: %@",[self delegate]); 
[[self delegate]entryGroupDoneButtonTapped]; 

概要:

私は "ここにコールバック" のメッセージが表示されていないが、私は持っています"委任された"メッセージ。 "class:"デバッグ行は "null"を出力します。

なぜですか?

(私が最初に二本、唯一のデリゲートのコールバックではない作品とから任意のデータを送信することができます)

+2

:I解決策を見つけました:destinationViewControllerはUI navigationControllerを返しますので、使用することができます:AddDrinkViewController * controller = [[[segue destinationViewController] viewControllerers] objectAtIndex:0]; – mudlee

+0

解決策を使って質問に答えられますか? :-) –

答えて

5

私は解決策を見つけた:destinationViewControllerUInavigationControllerを返しますので、私たちは使用することができます解決しようAddDrinkViewController *controller=[[[segue destinationViewController]viewControllers]objectAtIndex:0];

関連する問題