2017-04-26 28 views
1

思考一下,這感覺就像是一個noob MVC問題,但我不能想出或找到一個明確的答案,所以我覺得我應該問,併爲自己澄清一些。在另一個視圖中嵌入自定義視圖的正確MVC結構是什麼?

我有一個使用xib創建的自定義視圖。它將被用於目前我的應用中的其他4個地方。每種用法都具有相同的功能,所以我基本上只是創建一個可以多次重用的自定義控件對象。

我的「控制對象」包括爲UITextField的和兩個UIButtons。

我正在執行的功能是,第一個按鈕會調出一個UIPicker,第二個按鈕本質上是一個完成的按鈕,只會在UITextField上resignFirstResponder。如前所述,這將在任何地方使用。

我很好奇的是,那是正確的,我直接建立此功能到自定義UIView子類,因爲它是我的控制對象的所有實例一致的行爲?或者,我是否需要創建一個自定義的UIViewController子類以配合它呢?

目前,我在我的應用程序的主要的UIViewController我創造我的自定義的UIView「控制目標」的實例,對待他們像任何其他控制對象。如果我實際上應該創建一個自定義UIViewController類與它一起去,好了,我要另一個線程如何我應該做的(除非有人能指點我對這個資源)

更多的問題

到目前爲止,搜索網絡對我來說什麼都沒有,並且從我看到的所有事情,到目前爲止一直使用iOS開發,我已經感受到UIViewControllers真的只是一個主要的,可呈現的視圖(佔用整個屏幕..我可能會錯過一些術語)。

我的直覺是,沒有視圖控制器是我所描述的場景必要的,但我想嘗試得到某種確認,如果可能的話。

+2

只要自定義視圖內的功能或邏輯不是太複雜,在子類中執行它應該沒問題。您的自定義對象還應具有在回撥中按下* done *按鈕時所需的任何文本的功能。只要你的數據模型是分開的,從你的'UIView'對象看來,你的情況似乎是真的,不應該有任何問題。 – Rikh

回答

1

沒有銀彈,所以沒有辦法是絕對正確絕對錯誤。你在這裏描述的只是一個改變其狀態的觀點。因此,將所有內容放入UIView子類中是完全正確的。它也符合KISS原則。

然而,據我所知,如果我錯了,糾正我的自定義視圖的輸入 - 文本和從選取器採摘的價值並不真正影響視圖本身,但它附有viewController至。所以你需要將這個輸入傳遞給主機viewController。這可以通過默認實現的協議來實現。所以輸入數據的處理只寫入一次,但可以連接到任何你想要的viewController

+0

太好了,謝謝! 文本字段確實會傳遞迴視圖控制器,但選取器視圖僅影響視圖本身。控制對象用於輸入測量結果,選擇器用於更改測量單位。它只會改變一個NSNumberFormatter的乘法值。 我確實已經爲視圖設置了委託協議,因此它可以在更新值時通知控制器,然後在視圖本身上檢索當前值。聽起來像我在正確的軌道上。謝謝! – Mathieson

1

根據您所說的一切,我認爲不需要另一個視圖控制器。我可以看到答案可能有點不清楚,因爲這些操作是ViewControllers通常處理的事情,但我認爲你會讓自定義視圖本身處理它。

如果你添加更多功能或更復雜的操作,那麼也許現在是時候探索其他的選擇,但現在我認爲單一視圖將被罰款。

相關問題