私はストーリーボードに関するfollowing tutorialを読んでいます。Xcode(ストーリーボードとセグ):なぜリファレンスではなく代理人ですか?
基本的に、このチュートリアルで作成したサンプルアプリケーションを使用すると、さまざまなビューをナビゲートできます。segueを使用して作成されます。
まずコントローラ:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"AddPlayer"])
{
UINavigationController *navigationController = segue.destinationViewController;
PlayerDetailsViewController *playerDetailsViewController = [[navigationController viewControllers] objectAtIndex:0];
playerDetailsViewController.delegate = self;
}
}
第二コントローラ:
デリゲートを指定するには、一方から他方へ「行く」ときビュー間のチュートリアルをナビゲートするために
は2のUITableViewControllerを作成するために言うと、@protocol PlayerDetailsViewControllerDelegate <NSObject>
- (void)playerDetailsViewControllerDidCancel: (PlayerDetailsViewController *)controller;
- (void)playerDetailsViewController: (PlayerDetailsViewController *)controller didAddPlayer:(Player *)player;
@end
@interface PlayerDetailsViewController : UITableViewController
@property (nonatomic, weak) id <PlayerDetailsViewControllerDelegate> delegate;
"帰る":
- (IBAction)cancel:(id)sender
{
[self.delegate playerDetailsViewControllerDidCancel:self];
}
私の単純な質問はなぜこの合併症ですか?デリゲートとプロトコルを使う理由
"Java"スタイルを使用してコードを変更しましたが、今度は2番目のコントローラに渡して、最初のコントローラへの参照を渡しています。すべてが機能しています。
まずコントローラ:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
...
playerDetailsViewController.playerViewController = self;
}
第二コントローラ:
だから、@property (strong, readwrite) PlayerViewController *playerViewController;
、代わりに単にViewControllers間の参照を渡すのデリゲートを使用するメリットは何ですか?
ありがとうございます!あなたは、単一のクラスに関連付けられている強いタイプを使用する場合
グイド
ありがとうございます! –