2017-08-08 47 views
0

我希望這個問題不下來投給自己不夠具體,因爲我認爲,這個問題是非常具體(約一般,有時是模糊的概念)。什麼是構建用戶配置文件的MVC模型,特別是何時在UIViewController和UIView之間進行選擇?

當創建用戶配置文件,例如,如何嚴格應當(或可以)MVC模式被遵守,以及什麼,如果有的話,對開發這種類型的屏幕的最佳實踐,當談到「控制器」與「觀點」?

當我開始在UIViewController中(如下圖),我問自己,爲什麼是的UIViewController繪製資料界面,當我讀到的一切MVC說,資料界面是一個視圖,不是控制器。該控制器責任,按照我的理解,就像是從模型文件中的包抓取數據和處理的導航處理功能。

的UIViewController

class ProfileViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // set background color 
     self.view.backgroundColor = UIColor.white 

     // load banner 
     banner(profileHasCustomBanner: false) 

    } 

    // banner 
    func banner(profileHasCustomBanner: Bool) { 
     let bannerHeight: CGFloat = profileHasCustomBanner ? 300 : 150 
     let bannerImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: bannerHeight)) 
     bannerImageView.image = #imageLiteral(resourceName: "profile-image") 
     view.contentMode = .scaleAspectFit 
     view.addSubview(bannerImageView) 
    } 

} 

在上面的例子中,UIViewController中中有一個UIView(配置文件的橫幅圖像)。但是視圖應該是一個包含所有屏幕視圖的單獨文件嗎?不過,話又說回來,旗幟依賴於對用戶繪製它的接口數據,所以它必須經過控制器,所以旗幟屬於在控制器,對不對?

我要遵守MVC模型儘可能,因此如何在用戶配置文件「應該」走近?具體來說,UIViewController應該處理關於用戶配置文件的事情,具體是UIView應該處理的是什麼?

的UIView

class UserProfileView: UIView { 

    // do all user profile UIViews go here? 
    // is this supposed to be a separate file from the file that contains the UIViewController? 

} 

回答

1

你能不能堅持嚴格MVC和每個子類UIView的(例如UserProfileView),或者如果它只是簡單的東西,你可以在視圖控制器代碼在那裏創建視圖。

經驗法則,當你覺得你將要在多個地方使用該視圖時(例如,在各種控制器中的應用程序中,比如自定義alertView),你只需要實現子類化,從子類中獲得免費的功能,或者其他元素期待該特定類的視圖,例如自定義的UITableViewCell。

實際上,這是權衡成本(時間,複雜性),並創建了UIView自定義類的好處,以及個人喜好編碼的公平位的情況。

相關問題