[iOS開發]- 多控制器跳轉,ios開發控制器跳轉

來源:互聯網
上載者:User

[iOS開發]- 多控制器跳轉,ios開發控制器跳轉

需求一:我們製作APP的不可能一個介面來實現所有需求的,我們需要多個介面的跳轉。每個介面各自實現對應的需求,代碼實現多控制器之間的跳轉大致分為三類。一類是使用UINavigationController 跳轉 ,一類是使用UITabBarController 實現多個控制器之間的跳轉,還有一類是使用presentViewController( UIViewController, animated: animated

 , completion:completion)實現跳轉。

 

1.UINavigationController :

 

實現跳轉:使用UINavigationController要注意的是要設定根控制器,之後的跳轉都是根據根控制器來完成跳轉。設定根控制器代碼如下:

// 設定根控制器

let nav = UINavigationController(rootViewController:ViewController())

 

*使用UINavigationController時使用push和pop來實現跳轉,代碼如下:

navigationController.pushViewController(目標控制器, animated: true/false)

navigationController.popToViewController(回退上一個控制器, true/false )

navigationController.popToRootViewControllerAnimated(true/false)

*注意push是跳轉到目標控制器,而pop是回退到上個控制器,popToRootView是直接回退根控制器。

*在使用UINavigationController跳轉時,UINavigationController會給所有目標控制器套上“導覽列”,完成push之後,會自動在“導覽列”上產生一個返回item,點擊返回item會執行pop方法返回到上一個控制器。

總結:使用UINavigationController跳轉時,UINavigationController的外觀只需要設定一次,之後派生的“導覽列”都會保持根控制器的外觀。設定外觀需要在initialize方法中設定外觀代理對象(appearance)來完成設定,注意的是initialize是類方法。

 

2.UITabBarController :

 

實現跳轉:使用UITabBarController注意的是,要同時把所有要跳轉的控制器都一次設定完成。UITabBarController的子控制器是同時存在的,在跳轉目標子控制器時不會釋放其他子控制器。設定子控器的方法大致分為兩種,一種是通過addChildViewController:ViewController 完成設定自控制器,這種方法每次只能設定一個子控制器。要設定多個子控器的時候可以使用viewControllers來設定多個子控制器,viewControllers 返回的是一個數組,使用時,建立完控制器,將控制器放入數組,然後直接賦值即可。需要注意的數組中的順序,就是tabBar展示控制器的順序,具體代碼如下:

 

1).使用addChildViewController

 

self.addChildViewController:ViewController1()

self.addChildViewController:ViewController2()

self.addChildViewController:ViewController3()

 

2).使用viewControllers

 

self.viewControllers = [ViewController1(),ViewController2(),ViewController3()]

 

*跳轉時,直接點擊“標籤欄”上的barButtonItem即可

 

3.presentViewController  :

 

實現跳轉: 使用presentViewController可以跳轉任意控制器,但是在跳轉完成之後,如果要返回就要完成dismiss方法。presentViewController跳轉的特點是從螢幕下方推出直到覆蓋完整個螢幕,效果還是蠻好的,值得注意的是在完成dismiss方法之後,presentViewController會從記憶體釋放。具體代碼如下:

 

presentViewController(ViewController1() , animated: true/false , completion: nil)

 

* completion是完成跳轉之後執行的回調,我們一般填nil。

* 在跳轉完成一之後一定要首先寫dismiss方法

dismissViewControllerAnimated(true/false, completion:nil)

*這樣就完成了返回,同時該控制器也會從控制器中釋放。

 

總結:這樣完成了多個介面之間跳轉。

需求二:當然控制器之間的跳轉還可以使用sb,使用sb很簡單直接拖線show即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.