小编典典

从 UIView 到 UIViewController?

all

UIView有没有一种从
a到它的内置方法UIViewController?我知道你可以从UIViewControllerUIView通过[self view]但我想知道是否有反向引用?


阅读 120

收藏
2022-07-09

共1个答案

小编典典

由于长期以来这一直是公认的答案,我觉得我需要用更好的答案来纠正它。

关于需求的一些评论:

  • 您的视图不需要直接访问视图控制器。
  • 视图应该独立于视图控制器,并且能够在不同的上下文中工作。
  • 如果您需要视图以某种方式与视图控制器交互,推荐的方式以及 Apple 在 Cocoa 中所做的就是使用委托模式。

如何实现它的示例如下:

@protocol MyViewDelegate < NSObject >

- (void)viewActionHappened;

@end

@interface MyView : UIView

@property (nonatomic, assign) MyViewDelegate delegate;

@end

@interface MyViewController < MyViewDelegate >

@end

视图与其委托接口(UITableView例如,如此),它不关心它是在视图控制器中实现还是在您最终使用的任何其他类中实现。

我的原始答案如下: 我不推荐这个,其他可以直接访问视图控制器的答案也不推荐

没有内置的方法可以做到这一点。虽然您可以通过在 Interface Builder
中添加和连接这些来解决它,但不建议这样做IBOutletUIView视图不应该知道视图控制器。相反,您应该按照@Phil M
的建议进行操作,并创建一个用作委托的协议。

2022-07-09