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 
} 
相關問題