天天看點

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

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

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

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

這裡先說下通用的方法:

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

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

這裡的tabbarcontroller 是你在storyboard中對相應的viewcontroller打開其identifier inspector,然後對其storyboard id起的名字。

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

注意我這裡as後并沒有寫成viewcontroller,bug就出現在這裡。當我最初寫的是viewcontroller時,總會出bug,提示這樣:

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

我google了關于dynamic cast class unconditional也沒有找到太多有用的資訊,沒有辦法隻有求助stackoverflow的大神了,很快就有人回複:

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

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

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

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

繼續閱讀