我已阅读故事板的following tutorial。Xcode(故事板和segues):为什么代表而不是引用?
基本上,本教程中创建的示例应用程序允许用户在各种视图之间导航,并且它使用segue创建。
为了视图之间进行导航教程说,创建两个的UITableViewController,当从一个到另一个“走出去”指定一个委托:
第一控制器:
- (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;
}
}
第二个控制器:
@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”风格,现在我传递给第二个控制器的引用第一个,一切工作。
第一控制器:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
...
playerDetailsViewController.playerViewController = self;
}
第二个控制器:
@property (strong, readwrite) PlayerViewController *playerViewController;
那么,什么是使用委托的好处,而不是简单地通过ViewControllers之间的引用?
谢谢!
圭多
感谢您的回答! – 2012-03-09 07:59:20