用Swift完成不同View Controller之間的切換,swiftcontroller

來源:互聯網
上載者:User

用Swift完成不同View Controller之間的切換,swiftcontroller

之前用objective-c開發時,頁面之間的切換很容易。其實用swift沒有很大的變化,如果你是用storyboard完成的介面,基本上是同樣的方式,只不過在代碼部分寫成swift風格的就行了。

今天在實驗開發一個簡單的小程式時,卻遇到了一些bug,後來還是求助stackoverflow上的大神解決了問題,在此做下記錄。

我的程式結構是這樣的,在一個頁面A中有個按鈕,然後點擊按鈕以後,切換到另一個頁面B。A和B都在同一個storyboard中。

這裡先說下通用的方法:

  • 手動用代碼建好的view controller,即不是在storyboard中建立的:

var vc = ViewController() self.presentViewController(vc, animated: true, completion: nil) return

  • 在storyboard中建立的可以用下面的代碼:

let sb = UIStoryboard(name:"Main", bundle: nil)let vc = sb.instantiateViewControllerWithIdentifier("tabBarController") as ViewController self.presentViewController(vc, animated: true, completion: nil)

這裡的tabBarController 是你在storyboard中對相應的viewcontroller開啟其identifier inspector,然後對其storyboard ID起的名字。

所以我的程式就是,在A的類中,定義下面的button action:

@IBAction func login(sender: UIButton) {        let sb = UIStoryboard(name: "Main", bundle: nil)        let vc = sb.instantiateViewControllerWithIdentifier("tabBarController") as UITabBarController        self.presentViewController(vc, animated: true, completion: nil)    }
注意我這裡as後並沒有寫成ViewController,bug就出現在這裡。當我最初寫的是viewController時,總會出bug,提示這樣:




我Google了關於dynamic Cast Class Unconditional也沒有找到太多有用的資訊,沒有辦法只有求助stackoverflow的大神了,很快就有人回複:



原來是因為我從storyboard讀到的被命名為tabBarController的控制項不能被強制轉換(as)成viewcontroller,因為它其實是一個UITabBarController,也就是說,as後面你想要強制轉換成的一定要與storyboard中的保持一致。

所以,代碼就那麼幾行,但是不能生搬硬套。

如果你的storyboard中是viewcontroller,就as成viewcontroller,如果是UITabBarController就as成為UITabBarController,如果是其它的諸如UITableViewController,你知道怎麼做。





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.