在故事板中,Popoverview不接受委托

时间:2011-11-04 01:38:42

标签: ios ios5 storyboard xcode4.2

我正在通过storyboard工作示例应用程序。 制作popoverview时,我使用的方式是“Embed in navigation controller”。

但是我在delegate使用时遇到了大麻烦。 这不是委托给popover视图的。

Xcode - Embedded Menu

[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的委托为空。 我无法找到解决方案。

请有人帮助我!

1 个答案:

答案 0 :(得分:1)

我怀疑你没有在视图控制器的类声明中声明你的委托UIPopoverControllerDelegate。

这一行很可疑:

 rootViewController.delegate = (id)self; 
如果你提出我提到的声明,你不需要正常自我投射。