iOS:using Segue in Popover

來源:互聯網
上載者:User

今晚被一個問題搞半天,如果你使用segue時,正常的執行順序是,先執行源ViewController的prepareForSegue,再執行目標VC的ViewDidLoad,所以你可以在prepareForSegue對目的VC的相關屬性進行設定,進而達到傳值的目的。但是當你segue是使用在Popover的場合時,情況就不一樣了,系統是先調用目的的ViewDidLoad再調用源VC的prepareForSegue,顛倒過來了,所以剛剛說的賦值傳值的方法就行不通了(特別是你在目的的ViewDidLoad就要用到該屬性進行一些邏輯的時候)。

解決方案:方法1、放棄segue,直接代碼添加popover。

destinationVC = [storyboard instantiateViewControllerWithIdentifier:@"destinationVC"];

destinationVC.mmm = @"hello zhan!";

popover =  [[UIPopoverControlleralloc]initWithContentViewController:destinationVC];//運行這句會才調到目的的ViewDidLoad

.......

方法2、把你在viewDidLoad的邏輯放在一個函數中,在源VC的prepareForSegue掉用改邏輯。這個stackoverflow也有提到http://stackoverflow.com/questions/8838160/prepareforsegue-is-not-called-after-performseguewithidentifier-with-popover-st

 

相關文章

聯繫我們

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