簡體   English   中英

在另一個的UIViewController初始化中初始化自定義UIViewController

[英]Initialize Custom UIViewController in another's UIViewController init

我有這些自定義的UIViewController,LoadingViewController和LoadableViewController,並且LoadableViewController需要在startLoading函數上顯示LoadingViewController或在stopLoading函數上將其關閉。 我的嘗試如下,但我不確定如何在初始化程序中聲明用於loadViewController的變量,因為該變量已在情節提要中定義,將由情節提要分配,並且我不想無故重復分配(意思是在init中添加一個loadingViewController = LoadingViewController())。

import UIKit

class LoadableViewController: UIViewController {

    var loadingViewController: LoadingViewController

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func viewDidAppear(animated: Bool) {
        loadingViewController = storyboard?.instantiateViewControllerWithIdentifier("LoadingiewController") as! LoadingViewController
    }

    func stopLoading() {
        loadingViewController.dismissViewControllerAnimated(true, completion: nil)
    }

    func startLoading() {
        presentViewController(loadingViewController, animated: true, completion: nil)
    }
}

對我來說一切都很好。 不應有雙重分配,因為每次視圖出現時,您都將覆蓋self.loadingViewController的先前分配,並且ARC將垃圾回收舊值。

不需要self.loadingViewController = LoadingViewController() ,因為此實例將不知道您使用情節self.loadingViewController = LoadingViewController()板上的IBOutlet創建的接口。 當您使用instantiateViewControllerWithIdentifier ,實例LoadingViewController與你Interface Builder的內部關聯該類的UI元素創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM