2012-04-25 50 views
2

使用委托时,我通常只告诉UINavigationController中的下一个viewcontroller,我想将self设置为委托。我在我的prepareForSegue方法中这样做:如何在不使用segue.destinationViewController作为setDelegate方法的接收方的情况下设置委托?

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [segue.destinationViewController setDelegate:self]; 
} 

这一直很好。不过,我想告诉一个viewController两个索引或两个视图在navController,我想设置自我作为委托。我尝试了所有我能想到的方式来定义viewController接收器,我想发送setDelegate方法,但似乎没有任何工作。这里有一个例子我用尽:

DateSelectViewController *dsvc = [[DateSelectViewController alloc] init]; 
    [dsvc setDelegate:self]; 

的方法永远不会被委托,我知道这与我设置的委托,因为我已经排除了所有其他可能的方式做。我怎样才能正确地做到这一点?

回答

3

由于该视图控制器尚不存在,因此无法直接执行此操作。你可以做的,这是沿下一个:

[segue.destinationViewController setDelegate:self.delegate]; 

如果你有A - >B - >C

A

你有你的原始代码:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [segue.destinationViewController setDelegate:self]; 
    // self == A 
} 

B你会有:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [segue.destinationViewController setDelegate:self.delegate]; 
    // self.delegate == A 
} 
相关问题