我正在通过storyboard工作示例应用程序。
制作popoverview时,我使用的方式是“Embed in navigation controller
”。
但是我在delegate
使用时遇到了大麻烦。
这不是委托给popover视图的。
[ViweController.m]
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"PopRootViewController"]){
NSLog(@"[segue destinationViewController] :%@", [segue destinationViewController]);
rootViewController = [[RootViewController alloc] init];
rootViewController.delegate = (id)self;
NSLog(@"%@---%@---%@", rootViewController.delegate, self, rootViewController);
}
}
-(void)didTap22 {
NSLog(@"delegate step 1 success!! ");
}
此来源的结果如下:
[segue destinationViewController] :<UINavigationController: 0x88660a0>
<ViewController: 0x6b795e0>---<ViewController: 0x6b795e0>---<RootViewController: 0x6b7da60>
但[RootViewController]没有收到委托。
[RootViewController.m]
@implementation RootViewController
@synthesize items, delegate;
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
....
self.items = mutableFetchResults;
NSLog(@"333333..... %@, ....... %@", self.delegate, self);
}
结果:
333333..... (null), ....... <RootViewController: 0x8866520>
RootViewController的委托为空。 我无法找到解决方案。
请有人帮助我!
答案 0 :(得分:1)
我怀疑你没有在视图控制器的类声明中声明你的委托UIPopoverControllerDelegate。
这一行很可疑:
rootViewController.delegate = (id)self;
如果你提出我提到的声明,你不需要正常自我投射。