swift - iOS Storyboard: Not able to instantiate view controller properly -
i'm having trouble instantiating custom view controller.
this storyboard set up. third view controller 1 i'm trying present.
i've tried both of these methods.
1: results in black screen.
var searchcontroller: searchcontroller = searchcontroller() self.presentviewcontroller(searchcontroller, animated: true, completion: nil)
2: results in white, empty view controller popping up.
let mainstoryboard = uistoryboard(name: "main", bundle: nsbundle.mainbundle()) let searchcontroller : uiviewcontroller = mainstoryboard.instantiateviewcontrollerwithidentifier("searchcontroller") as! uiviewcontroller self.presentviewcontroller(searchcontroller, animated: true, completion: nil)
here code actual view controller:
class searchcontroller: uiviewcontroller { lazy var searchbar: uisearchbar = uisearchbar(frame: cgrectmake(0, 0, 200, 20)) override func viewdidload() { super.viewdidload() var leftitem = (uibarbuttonitem)(customview: searchbar) self.title = "search" self.navigationitem.leftbarbuttonitem = leftitem } override func didreceivememorywarning() { super.didreceivememorywarning() } }
it's confusing because custom view controller presented while using method #1 above. why wouldn't work controller?
thanks lot everyone.
when using storyboards don't need use presentviewcontroller
or instantiate view controllers manually. instead it's best use segue move 1 uiviewcontroller
next.
1. in case, want show segue, looks you've done judging storyboard.
2. need give segue identifier
can selecting segue , going attributes editor.
3. perform segue call following first view controller (instead of presentviewcontroller
).
self.performseguewithidentifier("youridhere", sender: self)
this cause storyboard instantiate searchviewcontroller
, present in way you've defined segue.
4. if want pass values searchviewcontroller
, can override prepareforsegue
in uiviewcontroller
. in first view controller:
override func prepareforsegue(segue: uistoryboardsegue, sender: anyobject?) { if let searchviewcontroller = segue.destinationviewcontroller segue.identifier == "youridhere") { // can set variables have access in `searchviewcontroller`. } }
and should it!