2

デリゲートを使用する場合、通常は UINavigationController 内の次のビューコントローラーに、自分自身をデリゲートとして設定することだけを伝えます。これを prepareForSegue メソッドで行います。

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

これは常にうまく機能しています。ただし、navController の 2 つのインデックスまたは 2 つのビューに対して、自分自身をデリゲートとして設定することを viewController に伝えようとしています。setDelegate メソッドを送信したい viewController レシーバーを定義できると考えられるあらゆる方法を試しましたが、何も機能していないようです。これが私が試した一例です:

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

メソッドが委任されることはありません。他のすべての可能性を除外したため、デリゲートの設定方法に関係していることはわかっています。どうすればこれを正しく行うことができますか?

4

1 に答える 1

3

そのView Controllerはまだ存在しないため、直接行うことはできません。あなたができることは、次のものに沿ってこれです:

[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 に答える