使用superview的导航控制器

时间:2010-03-01 23:24:45

标签: iphone navigationcontroller superview

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

我已经尝试了[[sender superview] navigationController]来获取superview调用的层次结构,但它也不会那样工作。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:3)

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

解决问题的最简单方法是让视图控制器而不是视图处理按钮的操作。如果这不适用于您的设计,请考虑为自定义视图设计委托协议,并使视图控制器成为自定义视图的委托。然后,视图将在按钮的action方法中调用delegate方法。后一种方法在整个Cocoa中使用很多,例如UIScrollViewUIScrollViewDelegate)和UITableViewUITableViewDelegate)。