私はストーリーボード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"を出力します。
なぜですか?
(私が最初に二本、唯一のデリゲートのコールバックではない作品とから任意のデータを送信することができます)
:I解決策を見つけました:destinationViewControllerはUI navigationControllerを返しますので、使用することができます:AddDrinkViewController * controller = [[[segue destinationViewController] viewControllerers] objectAtIndex:0]; – mudlee
解決策を使って質問に答えられますか? :-) –