2010-03-01 49 views
1

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

我已经尝试了[[发件人superview] navigationController]为superview调用的层次结构,但它不以这种方式工作。

有什么想法吗?

由于

回答

3

视图通常不具有它的视图控制器的知识(因此,它的或它的父的视图控制器的导航控制器),因为这将引入视图和视图控制器之间的紧密耦合的是通常是不想要的和不必要。

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

+0

我的自定义视图有它自己的视图控制器。我不明白你的观点是让视图控制器而不是视图处理按钮的操作。你能否详细说明这一点?非常感谢 – msk 2010-03-02 17:17:05

+0

非常感谢Ole,您的代表想法对此有所帮助。有点谷歌搜索,砰! – msk 2010-03-02 21:30:41