ma1*_*w28 7 model-view-controller delegates uiviewcontroller uikit uiview
一些答案说从UIView到UIViewController?是一个糟糕的设计实践.
但是,LevelView从Apple自己的BubbleLevel Xcode示例项目中,它有一个assign属性viewController.
我认为做的最好的事情就是定义一个协议及分配视图控制器作为视图的代表,就像你要做一个做UITableView或UITextField或UITextView.
但是,我可能是错的,所以我的问题是视图与视图控制器通信的推荐方法是什么?
Jon*_*nah 10
委派(使用弱引用)是视图与控制器通信的好方法.但是,您的视图不需要知道它正在与控制器通信.视图应该只知道存在一些实现其委托协议的对象,而不需要遍历控制器层次结构或使用其委托协议中未定义的委托的任何属性.
这允许视图保持与其控制器非常松散地耦合.您应该能够切换哪个对象充当视图的委托,或者更改哪个控制器正在呈现该视图,而无需更改视图本身.