从 iOS 6 开始,可以使用展开转场来向上导航场景层次结构。我正在尝试决定将数据传递给父视图控制器的更清洁/更好/首选/更可维护的方法。从技术角度来看,有一些问题可以解决这个问题(例如,“如果我放松一下,我还需要一个代表吗”),但我找不到很多可以解决利弊问题的问题。
选项 1:使用委托。
- 通过将父视图控制器作为遵守协议的委托传递来完成。
- Child 调用协议方法返回数据。
- 如果 Parent 需要数据验证,则返回允许 child 处理错误所需的 value/dict。
- 开销:协议定义和父级中的一种方法(用于数据验证和接收)。
选项 2:使用 unwind segue
- 通过调用 child 的 unwind segue 来完成。
- Child 通过将按钮或情节提要本身拖动到
Exit
并命名 segue 来在其场景中添加 segue,以便它可以与performSegueWithIdentifier:sender
- 父实现
returnFromSegueName
(链接到该 segue 的用户命名方法)以从子获取数据。 - 数据验证虽然只能通过也实现来实现
canPerformUnwindSegueAction:fromViewController:withSender
- 数据验证失败将需要 Child 上的另一个属性,因为此方法仅接受 BOOL 作为返回值。
- Child 通过将按钮或情节提要本身拖动到
- 开销:两种方法,一个额外的属性,以及 Storyboard 恶作剧。
总体而言,代表们感觉要走的路更干净,但也可能过时了。我向那个方向倾斜是错的吗?