我已经制作了一个自定义视图,我添加了一个自定义按钮。这个自定义视图作为我推入导航控制器的另一个视图(iphone的Kal日历)的子视图。现在我的自定义视图中的按钮连接到IBAction,我无法调用self.navigationController来弹出当前视图。
我已经尝试了[[sender superview] navigationController]来获取superview调用的层次结构,但它也不会那样工作。
有什么想法吗?
由于
答案 0 :(得分:3)
视图通常不知道它的视图控制器(因此,它或它的superview的视图控制器的导航控制器),因为这会引入视图和视图控制器之间的紧密耦合,这通常是不需要的和不必要的。
解决问题的最简单方法是让视图控制器而不是视图处理按钮的操作。如果这不适用于您的设计,请考虑为自定义视图设计委托协议,并使视图控制器成为自定义视图的委托。然后,视图将在按钮的action方法中调用delegate方法。后一种方法在整个Cocoa中使用很多,例如UIScrollView
(UIScrollViewDelegate
)和UITableView
(UITableViewDelegate
)。