2015-08-13 6 views
0

Я готовлю к segue заголовкам TabViewController SmashTabController, который подключен к TableViewController под названием SmashTableView - если вы еще не догадались, я следую за Stanford 193P iOS курс.Дополнительное связывание в Swift не работает в prepareForSegue

В моей отладочной сессии я вижу, что мой пункт назначения VC - это SmashTabController, но по какой-то причине моя необязательная привязка всегда терпит неудачу.

Любая идея, почему это может произойти?

Большое вам спасибо!

if let clicked = sender as? MentionsTableViewCell { 
    if clicked.mentions != nil { 
     let urlString = clicked.mentions! 
     if let url = NSURL(string: urlString) { 
      UIApplication.sharedApplication().openURL(url) 
     } 
    } else if let stvc = destination as? SmashTabViewController { 
     if let svc = stvc.presentedViewController as? SmashTableViewController { 
      svc.newSearch = clicked.mentions 
     } 
    } 
} 
+0

Поставьте точку останова на ', если позволить clicked' и пройдите через отдельные линии, чтобы выяснить, какой из них неисправен. Как только вы ограничите это до одной строки, вам будет легче найти, что не так. – MirekE

+0

Я сделал это, и это назначение stvc. он всегда терпит неудачу, чего я не получаю – GMak

ответ

0
if let clicked = sender as? MentionsTableViewCell { 
     if clicked.mentions != nil { 
      let urlString = clicked.mentions! 
       if let url = NSURL(string: urlString) { 
         UIApplication.sharedApplication().openURL(url) 
       } 
      } else if let stvc = segue.destinationViewController as? SmashTabViewController { 
      if let svc = stvc.presentedViewController as? SmashTableViewController { 
         svc.newSearch = clicked.mentions 
        } 
     } 
    } 

Я не могу видеть, где вы на самом деле дать destinationViewController в prepareForSeque. Я предполагаю, что это TabBarController, а затем вы хотите передать данные в представление на этом tabBar. Это должно сработать, если это так.

0

Я не уверен, что именно вы там делаете в части else-if. Мой код обычно выглядит следующим образом:

if let controller = segue.destinationViewController as? TheDestinationViewController 

или в случае, когда контроллер назначения завернутый в навигационном контроллере, это будет что-то вроде:

 if let nav = segue.destinationViewController as? UINavigationController { 
      if let targetController = nav.topViewController as? TheDestinationViewController { 
       // pass on something? 
      } 
     }