2

使用委托时,我通常只告诉 UINavigationController 中的下一个视图控制器我想将自己设置为委托。我在 prepareForSegue 方法中执行此操作:

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

这一直很有效。但是,我试图在 navController 中告诉 viewController 两个索引或两个视图,我想将 self 设置为委托。我已经尝试了所有我能想到的方法来定义我想将 setDelegate 方法发送到的 viewController 接收器,但似乎没有任何效果。这是我尝试过的一个示例:

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

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

4

1 回答 1

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
}
于 2012-04-25T22:05:30.670 回答