使用Swift,如何使用StoryBoards创建另一个UIViewController

时间:2014-06-16 10:44:32

标签: uiviewcontroller storyboard swift

我有一个现在持有按钮的viewcontroller,我想创建一个新的viewcontroller并将其视图添加到当前的

到目前为止,我做到了这一点:

class ViewController : UIViewController
{
    var myController: MyController = MyController.controller()

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

    init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)
    {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    override func viewDidLoad()
    {
        super.viewDidLoad()
        self.view.addSubview(self.myController.view)
    }

    @IBAction func buttonPressed(sender : AnyObject)
    {

    }
}
在MyController中我做了一个单身(我希望我做对了)

class MyController : UIViewController
{

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

    init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)
    {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    class func controller() -> MyController
    {
        var once : dispatch_once_t = 0
        var sharedInstance: MyController?

        dispatch_once(&once, { sharedInstance = MyController()})

        return sharedInstance!
    }
}
如果我不打电话给

,我得到的行为就是这个

self.view.addSubview(self.myController.view)

一切正常,如果我这样做,中心的按钮不再能识别触摸,就像它有一些拦截触摸的东​​西,这里有什么问题?我错过了什么?

1 个答案:

答案 0 :(得分:1)

  在MyController中我做了一个单身(我希望我做对了)

你做错了。这里不需要单身人士。如果您使用的是故事板,则在下面的行

var myController: MyController = MyController.controller()  

可能是

var myController: MyController = self.storyboard.instantiateViewControllerWithIdentifier("MyViewController")

然后在添加子视图之前设置self.myController.view

的框架
self.myController.view.frame = CGRectMake(0, 0, 320, 200); // or what ever frame you want