我有一個VC控制有2種模式的內容屏幕;一個正常模式和一個編輯模式。視圖控制器可以管理多個基於nib的視圖嗎?
我可以用兩個視圖創建一個VC,每個視圖都來自單獨的筆尖?
在iphone的許多情況下,你有一個控制關聯視圖的VC。然後在 按下按鈕或其他事件,一個新的VC是加載和角度的頂層視圖等
但是在這種情況下,我有2種模式,我想用同樣的 VC的,因爲他們密切相關。所以我想要一個可以交換2個視圖的VC。
按這裏: How to load a UIView using a nib file created with Interface Builder
我發現我可以在以後負荷 從另一個筆尖加載VC從筆尖相關的視圖,然後不同的觀點,並做出新的視圖活動視圖。
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"EditMode" owner:self options:nil];
UIView *theEditView = [nibObjects objectAtIndex:0];
self.editView = theEditView;
[self.view addSubview:theEditView];
輔助筆尖具有與主筆尖一樣連接到VC的插座。當新的筆尖加載時,這些插座都連接良好,一切都很好。不幸的是,當編輯 視圖然後被刪除,似乎沒有任何優雅的方式讓網點再次連接 到原始筆尖的(正常模式)視圖。筆尖加載和插座設置似乎是一次只有一件事。
因此,如果你想擁有一個可以在不創建新VC的情況下交換2個視圖的VC,那麼有什麼選擇?
1)你可以在代碼中做所有事情,但我想使用nibs,因爲它使得創建UI更簡單。
2)您的VC有1個筆尖,只是使用UIView及其子類的隱藏屬性隱藏/顯示元素。
3)如上所述加載新的筆尖。這對新的筆尖來說很好,但是當你回到原來的筆尖時,如何分類出口。
4)放棄並接受VC和筆尖之間的1:1。正常模式有一個筆尖,編輯模式的筆尖,每個模式都有一個VC,它是一個通用超類的子類。最後,我去了4),它工作,但需要相當多的額外工作,因爲我有一個模型類,我在正常模式下實例化,然後必須傳遞到編輯模式VC,因爲兩者模式需要訪問模型。我也使用NSTimer,並且必須在每種模式下啓動和停止計時器。這是因爲所有這些共享功能,我首先需要一個帶有2個筆尖的VC。
嗨布拉德,我想這可能是一種可能性,但最好的做法是保持每個筆尖儘可能小,也有很多網點指向我的主要或編輯視圖中的元素,所以要麼我有有重複的網點可以這麼說,否則我會在[查看removeFromSuperview]後回到網點重新連接問題。現在要堅持使用我的子類化方法,但是要想到這個想法。 – Brynjar 2010-05-03 13:10:27