0

我有一個UIView子類,它包含一些標籤,一個tableview和一些其他的一塊。它目前是tableview的委託和數據源,並且還管理許多UI操作,但都不依賴於數據。例如,當按下'編輯'按鈕時,它知道如何更新其控件,但除了將控件切換回先前的狀態之外,按下「保存」時也不會執行任何操作。所有這些都是在代碼中完成的,我在這個應用程序中完全沒有使用IB。將UIView連接到一個UIViewController

我現在想在所有的數據模型下探的變化,它可以招惹。但我想把這些放在一個新的控制器類中,我想這是符合MVC的做事方式。我不知道如何到達那裏。

首先,我需要創建一個自定義控制器類。我應該從UIView子類暴露一些控件,以便視圖控制器可以訪問它們嗎?例如,我需要讀取和寫入視圖中的文本字段,所以我應該爲此提供一個getter/setter?

其次,實現代碼如下 - 代替的UIView作爲代表,我應該也暴露這一點,使視圖控制器的代表?即view.tableView.delegate = UIViewController中的self?

最後,我要如何啓動從另一個觀點有何看法?具體來說,這是一個類似於天氣應用程序的分頁滾動視圖應用程序,所以我有一個mainView UIView,它指定單個分頁滾動視圖,然後添加多個自定義UIView,每個頁面一個。我如何替換[scrollView addSubview:myCustomView]並添加viewController?我如何將視圖連接到控制器,反之亦然?

我還沒有十分感謝幫助之前嘗試了所有這些都不IB。

回答

0

你提的問題非常廣泛,且部分答案將取決於你如何編寫你的解決方案。我會嘗試與回答的是什麼工作的一些提示,我

查看:作爲一個一般的經驗法則,請記住,一個視圖對象應該是非常通用的,那什麼都不知道關於其他視圖在它自己的層次之外。因此,視圖不應該依賴與其他視圖的任何特定交互,而是在需要時通過回調,協議,塊等傳回其代表/所有者/創建者。

視圖控制器:任何時候你需要使不同層次中的兩個視圖互相交互,我的建議是你堅持通過視圖控制器處理交互。通過這樣做,您可以確保您的視圖不會受到在其他屏幕中無用的代碼的影響。

也請記住,UIViewController中的iOS旨在爲您用於處理整個可見視圖分級中的類,而不是充當控制器的單一視圖。因此,我建議你不要爲每個視圖設置一個控制器,而應該單獨處理它們。

發佈視圖元素: UIView在頭文件中暴露的公有程度取決於您的實現。任何處理視圖外觀的方法,看起來都是通用和可重用的,並且不需要視圖樹的範圍之外的任何東西,這肯定是你想包含在它的實現中並在頭文件中發佈的東西。

對於您覺得外部人員需要訪問的任何房地產而言,情況也是如此。

建議:只發布真正需要的東西。通常發佈新的方法和屬性比稍後刪除它們更容易。

相關問題