之前MVC組裝問題的解決

  1. 現(xiàn)在的理解是如果非全局的MVC/MVP的組裝,還是可以在Controller進(jìn)行組裝,畢竟是到用戶用得到你這個MVC/MVP的時候,這個MVC的生命周期才開始。
  2. 在MVC,MVP模式中,存在數(shù)據(jù)初始化的步驟,還有組裝的步驟,不屬于任何MVC,MVP任何一方。應(yīng)該作為全局變量?;蛘呤窃诔绦騿訒r組裝好各個部分。而之前的想法有一部分是對的。能在AppDelegate中解決全局變量的初始化問題。但直至現(xiàn)在,我還沒能找出組裝各個部分,而又使得這部分代碼離開這3方的方法。
  3. 然后昨晚的實驗貌似成功了。之前不懂得這3方面的組裝很有可能是因為不懂window,ViewController,storyboard的關(guān)系。所以沒能組裝。
    我昨晚的組裝代碼:
// 在AppDelegate中聲明VC變量還有全局變量
var tableViewController:UITableViewController?
var globalArray:[ModuleData]?
// 在application函數(shù)中進(jìn)行初始化
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        customDataSource = CustomDataSource(cellIdentifier: "CustomCellID", configureCell: {(oneCellItem,cellData) in
            let cell = oneCellItem as! CustomCell
            cell.configureForCell(item: cellData as! ModuleData)
        })
        // 后面的是初始化VC的,用代碼的方式對Storyboard文件內(nèi)容進(jìn)行裝載。
        tableViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "TableViewController") as! UITableViewController
        tableViewController?.tableView.dataSource = customDataSource
        var jj = tableViewController
        printPointer(ptr:&jj!)
        window?.rootViewController = UINavigationController(rootViewController: tableViewController!)
        // 以這樣的方式能夠使得只初始化一個實例貌似是這樣子的。
        // 這樣做的關(guān)鍵是能夠?qū)⒔M裝還有數(shù)據(jù)初始化的代碼和VC分開來。
        // 我認(rèn)為組裝對了的原因是:1.我沒有再在其他地方對數(shù)據(jù)初始化,所以數(shù)據(jù)初始化是正確的。
        // 2.我沒有再在其他地方將分出來的dataSource、CustomCell它們和VC進(jìn)行組裝。只有這個地方組裝起來,而且最終結(jié)果運行起來沒有問題。
        return true
    }
  1. 這里稍微補(bǔ)充一下之前糾結(jié)什么問題。
  2. 之前學(xué)MVC,遇到了問題是Module層數(shù)據(jù)的初始化我放在Controller層里面VC來初始化。但是它是Module層,不應(yīng)該和Controller層混在一起。
  3. 若將dataSource還有對Cell的定制的代碼從VC中分離出來。那么誰來將它們組裝在一起呢?怎么組裝呢?現(xiàn)在找到方法了,直接在AppDelegate中用上面的方式來初始化VC,組裝它們。就好了。

項目鏈接MVCDemo
// 這個項目是一個迷你的MVC模式項目,讓自己清晰它的結(jié)構(gòu)的一個項目。
// 遲點補(bǔ)充一篇關(guān)于window,storyboard,VC的關(guān)系,還有如果不是代碼進(jìn)行組裝的話,內(nèi)部流程是怎么樣子的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容