私は数日間ビューコントローラーを見てきました(xcodeヘルプ、グーグル、スタックオーバーフローを検索しています)。理解できないコードがあります。ここに、読んでいる本で見つけた次のコードがありますが、正しく理解できているかどうかはわかりません。
-(void)prepareForSegue(UIStoryboardsegue *)segue sender:(id)sender{
((ViewController2 *)segue.destinationViewController).delegate = self;
}
まず、ここで 2 番目のビュー コントローラー (viewController2) に型キャストする理由がわかりません。残りはわかると思いますが、メソッドのセグエ パラメータ (セグエに関与するビュー コントローラに関する情報を保持します) を取得し、destinationViewController にアクセスします (つまり、目的のビュー コントローラにアクセスしたいということです)。次に、宛先ビュー コントローラーのデリゲート プロパティを self に設定します。目的のView Controllerでデリゲートにメッセージを送信したいので、デリゲートプロパティをselfに設定したと思います。
私が得られない最後のものは次のとおりです。
ヘッダー ファイル内:
@property (weak, nonatomic)id delegate;
実装ファイル内: (controllerVisisble プロパティはブール値であり、ユーザーがボタンを押して 2 番目のビュー コントローラー (このコントローラー) への手動セグエを実行すると、YES に変更されます)
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
((ViewController *)self.delegate).controllerrVisisble=NO;
}
ビューが閉じたり削除されたりすると、viewWillDisappear メソッドが呼び出されます。
[super viewWillDisappear:animated] についてはよくわかりませんが、ビューが消えるときにアニメーションが表示されるのではないかと推測しています。 .
ここが本当に私を混乱させる部分です。最初のView ControllerのdateChooserVisibleプロパティに何らかの方法でアクセスしてNOに設定し、ボタンから2番目のView Controllerに再度アクセスできるようにする必要があります。しかし、型キャスト (viewController *) して、self.delegate を入力しなければならない理由がわかりません。また、ここで使用するために、ヘッダー ファイルにデリゲートというプロパティを作成した理由もわかりません。