兩個介面的連線

weixin_34249678發表於2016-10-12

ViewController

    @IBAction func didClicked(sender: UIButton) {
        //1. 建立一個頁面物件
        let secondCtrl = SecondViewController()
        //2.找到一個已經顯示的頁面
        //模態檢視Modal
        //對於正在顯示的頁面或控制元件,系統會自動維持它的強引用
//        self.presentViewController(secondCtrl, animated: true, completion: nil)
        
        //1. 獲取window
//        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
//        appDelegate.window?.rootViewController = secondCtrl
        
        //2. 獲取window
//        UIApplication.sharedApplication().keyWindow?.rootViewController = secondCtrl
        
        //3. 對於一個已經顯示的檢視,一定有一個window屬性
        self.view.window?.rootViewController = secondCtrl
    }

    deinit {
        print("第一個頁面銷燬")
    }

SecondViewController

class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    //每一個頁面在顯示之前都會呼叫viewDidLoad
    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.redColor()
        
        let tableView = UITableView(frame: self.view.bounds, style: .Plain)
        tableView.dataSource = self
        tableView.delegate = self
        //顯示一個控制元件,會自動提供強引用
        self.view.addSubview(tableView)
        
        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
        cell.textLabel?.text = "aaa"
        return cell
    }
    
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        //讓當前頁面消失
        //系統自動將提供的強引用刪除
//        self.dismissViewControllerAnimated(true, completion: nil)
        
//        let firstCtrl = ViewController()
        
        //從Storyboard獲取新的第一個頁面
        let firstCtrl = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
        
        self.view.window?.rootViewController = firstCtrl
    }
    
    deinit {
        print("通知該物件即將銷燬")
    }
}

相關文章