2015-03-20 4 views
0

Я пытаюсь нажать контроллер просмотра в контроллер навигации. Код выглядит правильно в xcode 6.1. Но когда я сменил проект на xcode beta6.3, я попросил xcode изменить оператор typecase как на.! Теперь я не могу нажать вид контроллер в навигационном контроллереНевозможно нажать контроллер просмотра на контроллер навигации с помощью xcode beta 6.3

//delegate method 
    func sendIndex(row : Int){ 

     switch row { 

     case 0: 

      if(!isCurrentMoneyVc){ 
      let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
      let moneySummaryVC: MoneySummaryVC = storyboard.instantiateViewControllerWithIdentifier("moneyVC") as MoneySummaryVC 
      //self.navigationController?.pushViewController(moneySummaryVC, animated: true) 
      self.navigationController?.setViewControllers([moneySummaryVC], animated: true) 
      }else{ 
       hideMenu() 
      } 

     case 1: 

      if(!isCurrentAboutVc){ 
      let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
      let moneySummaryVC1: AccountsVC = storyboard.instantiateViewControllerWithIdentifier("account") as AccountsVC 

      self.navigationController?.pushViewController(moneySummaryVC1, animated: true) 
      }else{ 
       hideMenu() 
      } 

     case 2: 

      if(!isCurrentTransactionVc){ 
      let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
      let moneySummaryVC2: Transaction = storyboard.instantiateViewControllerWithIdentifier("transact") as Transaction 
      self.navigationController?.pushViewController(moneySummaryVC2, animated: true) 
      }else{ 
       hideMenu() 
      } 

     default: 
      println("no index") 


     } 

    } 

ответ

1

Технически ваш ViewController может быть нулевым, если не найден в раскадровке, которая, вероятно, почему Xcode жалуется. Лучший подход ссылаться на ViewController из раскадровки и толкая его:

if let moneySummaryVC2 = storyboard.instantiateViewControllerWithIdentifier("transact") as? Transaction { 
     self.navigationController?.pushViewController(moneySummaryVC2, animated: true) 
} 

Здесь мы теперь только попытаться подтолкнуть ViewController если ViewController постоянной moneySummaryVC2 была успешно создана, означая ViewController идентификатор был найден в раскадровке. Не забывайте обрабатывать ситуации, когда viewcontroller не найден (запись или что-то еще).

+0

я понравился способ .... но didnot работа для меня :( –

+0

та же ошибка, вы изменяете все они имели – tskulbru

+0

я фиксированной that..took мне почти 2 часа .. я должен имеют инициализированный контроллер корневого представления для контроллера навигации th у меня встроено. –

0

Прежде всего, вы должны инициализировать корневой View Controller в качестве навигационного контроллера в AppDelgate.swift, как показано ниже:

let navigationController = UINavigationController(rootViewController: MainViewController()) 

Затем добавьте следующий код, чтобы нажать View Controller с помощью «раскадровке ID» :?

let anotherController: UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("StoryBoardID") as! UIViewController 
     self.navigationController?.pushViewController(anotherController, animated: true) 
+0

Я сделал это через раскадровку. Инициализация контроллера корневого представления для контроллера навигации. В любом случае спасибо человеку! –

Смежные вопросы