2016-04-02 37 views
0

我正在編程開發一個非常簡單的Swift應用程序(沒有故事板)。我有一個HomeViewController在Swift中使用幾個視圖控制器

import UIKit 

class HomeViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func createButton(){ 

     let button = UIButton() 
     button.setTitle("Start", forState: .Normal) 
     button.setTitleColor(UIColor.blueColor(), forState: .Normal) 
     button.frame = CGRectMake(100,200,50,50) 
     button.addTarget(self, action: "timerPressed:", forControlEvents: .TouchUpInside) 
     self.view.addSubview(button) 

    } 

} 

和我有以下

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let home = HomeViewController() 
     home.createButton() 
    } 

} 

當我打電話home.createButton()我期待有一個按鈕來顯示,但目前它沒有。我知道該方法的工作原理,因爲當我將createButton()方法移動到ViewController類中時,它顯示按鈕。我是否錯過了如何正確調用HomeViewController中的createButton方法。有沒有更好的習慣做我想做的事情?

+0

您正在創建一個homeviewcontroller的新實例它的視圖不存在於視圖層次結構中 –

+0

您並未將按鈕添加到您要調用的vie控制器 –

+0

您應該將homeViewController添加爲viewController的子控制器。就像'addChildViewController(home)self.view.addSubview(home.view)'' – Lucho

回答

1
class func createButton(controller: UIViewcontroller){ 

      let button = UIButton() 
      button.setTitle("Start", forState: .Normal) 
      button.setTitleColor(UIColor.blueColor(), forState: .Normal) 
      button.frame = CGRectMake(100,200,50,50) 
      button.addTarget(self, action: "timerPressed:", forControlEvents: .TouchUpInside) 
      controller.view.addSubview(button) 

     } 

現在調用該方法以任何視圖控制器

這樣的:

HomeViewController.createButton(個體經營)。

0

你可以寫createButton代碼下的loadView()你HomeViewController

class HomeViewController: UIViewController { 

    override func loadView() { 
     super.loadView() 
     let button = UIButton() 
     button.setTitle("Start", forState: .Normal) 
     button.setTitleColor(UIColor.blueColor(), forState: .Normal) 
     button.frame = CGRectMake(100,200,50,50) 
     button.addTarget(self, action: "timerPressed:", forControlEvents: .TouchUpInside) 
     self.view.addSubview(button) 
    } 
} 

方法,所以沒有必要調用HomeViewController額外的方法添加按鈕的子視圖它。

相關問題