2014-09-23 64 views
-1

我在代碼中使用segue從一個視圖控制器到另一個視圖控制器,它們都嵌入在導航控制器中,segue是「顯示」。無法識別的選擇器發送到實例在迅速

這是我如何調用SEGUE:

 performSegueWithIdentifier("LogIn", sender: self) 

這是我做的:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "LogIn" { 
      segue.destinationViewController.setShowsCancelButton(false, animated: false) 
     } 

    } 

而且只要SEGUE被觸發我得到在Xcode中的錯誤:

[Chooze.LogInOrRegisterViewController setShowsCancelButton:animated:]: unrecognized selector sent to instance 0x7f928b93aed0 
2014-09-23 16:40:04.608 Chooze[9935:939290] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Chooze.LogInOrRegisterViewController setShowsCancelButton:animated:]: unrecognized selector sent to instance 0x7f928b93aed0' 

回答

0

由於目標視圖控制器嵌入在導航控制器中,因此您的代碼正試圖調用setShowsCancelButton在導航控制器上。相反,你應該訪問導航控制器的topViewController財產,並調用setShowsCancelButton它返回的對象,例如:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) 
{ 
    if segue.identifier == "Login" { 
     let navController = segue.destinationViewController as UINavigationController 
     let controller = navController.topViewController as LoginOrRegisterViewController 
     controller.setShowsCancelButton(false, animated: false) 
    } 
} 
+0

在這條線'controller.setShowsCancelButton(假的,動畫:假)'我得到以下錯誤: 「LogInOrRegisterViewController沒有一個名爲'setShowsCancelButton'的成員 – 2014-09-23 14:29:33

+0

然後你爲什麼要調用這個方法?你沒有發佈該類的任何代碼,所以沒有辦法猜測它的作用。 – jlehr 2014-09-23 14:32:36

+0

我正在使用相同的方法在objective-c中,我只是想在swift中完全一樣,這是在目標 - c [[(segue.destinationViewController)setShouldHideBackButton:YES];' – 2014-09-23 14:35:15

相關問題