我做了一個自定義視圖,我添加了一個自定義按鈕。這個自定義視圖作爲另一個視圖的子視圖(用於iphone的Kal日曆),我將其推入導航控制器。現在我的自定義視圖中的按鈕連接到一個IBAction,我無法調用self.navigationController來從中彈出當前視圖。使用超級景觀導航控制器
我已經嘗試了[[發件人superview] navigationController]爲superview調用的層次結構,但它不以這種方式工作。
有什麼想法嗎?
由於
我做了一個自定義視圖,我添加了一個自定義按鈕。這個自定義視圖作爲另一個視圖的子視圖(用於iphone的Kal日曆),我將其推入導航控制器。現在我的自定義視圖中的按鈕連接到一個IBAction,我無法調用self.navigationController來從中彈出當前視圖。使用超級景觀導航控制器
我已經嘗試了[[發件人superview] navigationController]爲superview調用的層次結構,但它不以這種方式工作。
有什麼想法嗎?
由於
視圖通常不具有它的視圖控制器的知識(因此,它的或它的父的視圖控制器的導航控制器),因爲這將引入視圖和視圖控制器之間的緊密耦合的是通常是不想要的和不必要。
解決你的問題最簡單的方法是讓視圖控制器而不是視圖處理按鈕的動作。如果這不適合您的設計,請考慮爲您的自定義視圖設計一個委託協議,並使您的視圖控制器成爲自定義視圖的委託。該視圖然後將調用按鈕的操作方法中的委託方法。這後一種方法在整個可可中都有很多使用,例如,通過UIScrollView
(UIScrollViewDelegate
)和UITableView
(UITableViewDelegate
)。
我的自定義視圖有它自己的視圖控制器。我不明白你的觀點是讓視圖控制器而不是視圖處理按鈕的操作。你能否詳細說明這一點?非常感謝 – msk 2010-03-02 17:17:05
非常感謝Ole,您的代表想法對此有所幫助。有點谷歌搜索,砰! – msk 2010-03-02 21:30:41