0

私は基本的なエラーであると確信していることに夢中になっていますが、それを見つけることができません。私には単純な代理人がいて、これ以外はすべて機能します。普段の扱い方と何の違いもありません。

@interface MasterViewController () <DetailViewControllerDelegate, SettingsViewControllerDelegate>

@end

@implementation MasterViewController

....

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if([[segue identifier] isEqualToString:@"ShowSettings"]) {
    // here settingsViewController._delegate is 0x075...
    // why? where is this coming from?
    SettingsViewController *settingsViewController = [segue destinationViewController];
    // here settingsViewController._delegate is 0x00000 which I would expect
    [settingsViewController setDelegate:self];             
    // here settingsViewController._delegate is still 0x0000 -- why?
  }
}
4

3 に答える 3

1

-[SettingsViewControllerデリゲート]のバッキングiVarは_delegateですか?@syntehsizeデリゲートがいる可能性があります。iVarを単に「委任」する行。setDelegate:を呼び出した後、デバッガーで「p * settingsViewController」を試して、自分が持っていると思うインスタンス変数が他にないことを確認してください。

于 2012-09-14T03:11:02.567 に答える
0

それを私が直した。それには時間がかかりすぎました。私は自分のレッスンを学びました。デバッガーを使用するように通知してくれたJonに感謝します。

    SettingsViewController *settingsViewController = [segue destinationViewController];        
    NSArray *childViewControllers = [NSArray arrayWithArray:[settingsViewController childViewControllers]];
    [[childViewControllers objectAtIndex:0] setDelegate:self];

それは機能しますが、これは正しい方法ですか?[seguedestinationViewController]はUINavigationControllerでした。

于 2012-09-14T15:55:25.543 に答える
0

最も可能性の高い原因は[segue destinationViewController]ですnilsetDelegate:または、誤って実装されたカスタムがある可能性があります。

于 2012-09-14T03:10:07.610 に答える