1

我制作了一个自定义视图,向其中添加了一个自定义按钮。这个自定义视图作为我推入导航控制器的另一个视图(iPhone 的 Kal 日历)的子视图。现在,我的自定义视图中的按钮已连接到 IBAction,在该 IBAction 中我无法调用 self.navigationController 以从中弹出当前视图。

我已经为超级视图调用的层次结构尝试了 [[sender superview] navigationController],但它也不是那样工作的。

请问有什么想法吗?

谢谢

4

1 回答 1

3

视图通常不知道它的视图控制器(因此也不知道它或它的父视图的视图控制器的导航控制器),因为这会在视图和视图控制器之间引入通常不需要和不必要的紧密耦合。

解决问题的最简单方法是让视图控制器而不是视图处理按钮的操作。如果这对您的设计不起作用,请考虑为您的自定义视图设计一个委托协议,并使您的视图控制器成为自定义视图的委托。然后视图将在按钮的操作方法中调用委托方法。后一种方法在整个 Cocoa 中被大量使用,例如UIScrollView( UIScrollViewDelegate) 和UITableView( UITableViewDelegate)。

于 2010-03-02T00:00:47.283 回答