-1

アプリケーションの起動時に使用するクライアントを選択する必要があるアプリケーションがあります。アプリ デリゲートから、ユーザーが選択できるようにするモーダル ビューへのセグエを開始しています。ビューには、「キャンセル」と表示され、ビューを閉じた左バー ボタンがあります。ユーザーが最初にクライアントを選択したときはこれを無効にしますが、それ以降はユーザーがクライアント選択ペインを開くたびに有効にします。

cancelButton と呼ばれる選択クライアント ビューに IBOutlet があります。

セグエを起動しているView ControllerのprepareForSegueメソッドでは、

if ([segue.identifier isEqualToString:@"selectClient"]) {
 if (firstSegue) {
    SelectClientViewController *select = (SelectClientViewController *)segue.destinationViewController;
    select.cancelButton.enabled = NO;
 }
 firstSegue = NO;
}

ただし、ボタンは最初の起動時に有効なままです。どんな助けでも大歓迎です。

4

1 に答える 1

1

が呼び出されたときprepareForSegue、ビューはロードされていません。メソッド中に何もしないと、後でビューがロードされません。ビューがロードされていない場合、アウトレットは使用できません (まだロードされていません)。問題は、無効にしようとしているボタンがまだ存在しないことです。

ビューのプロパティを設定する前に、宛先コントローラーにフラグを設定してボタンを無効にviewDidLoadするか、ビューが読み込まれるようにします。

于 2013-08-09T22:48:53.263 に答える