3
我在故事板中有兩個控制器(第一個,第二個),xcode 4.2。iOS委託不與performSegueWithIdentifier一起使用?
第一個控制器有一個tableview並嵌入導航控制器。 第二控制器具有的tableview太和嵌入在導航控制器(未與第一)
在first.h:
#import "second.h"
...
@interface first : UIViewController <secondDelegate, UITableViewDelegate, UITableViewDataSource>
...
在first.m:
- (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");
}
Segue公司是一個默認過渡模式。
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」。
爲什麼?
(我可以先發送任何數據到第二本,只有委託的回調不工作)
解決:我找到了一個解決方案:destinationViewController返回一個UI導航控制器,所以我們可以使用:AddDrinkViewController * controller = [[[segue destinationViewController] viewControllers] objectAtIndex:0]; – mudlee
你能用你的解決方案回答你的問題嗎? :-) – 2012-04-10 14:40:43