2016-04-04 5 views
0

Я работаю с быстрым 2.2 и xcode 7.3. Я пытаюсь загрузить табличный вид из другого представления таблицы при нажатии на строку. ВTableView Не загружается с didselectRowAtindexPath в другом представлении таблицы

didSelectRowAtIndexPath 

первой таблицы View, я создаю экземпляр другого класса табличного и вызвать его с помощью pushViewController. Но представление таблицы не загружается, и экран остается тем же. Мой код

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    NSLog("It did enter the didselectRowAtIndexPath") 
    if (indexPath.section == 0){ 
     let enrolledView = DetailsViewController() 
     navigationController?.pushViewController(enrolledView, animated: true) 
    } 

    if (indexPath.section == 1){ 
     let appcatalog = AppCatalogViewController() 
     navigationController?.pushViewController(appcatalog, animated: true) 
    } 

    if (indexPath.section == 2){ 
     let support = supportViewController() 
     navigationController?.pushViewController(support, animated: true) 
    } 


} 

Примечание: «Это было ввести didselectRowAtIndexPath» печатается в журнале. Так что дайте мне знать, есть ли что-то, что не работает правильно.

+0

Вы назначаете делегата tableView? –

+1

Можете ли вы показать нам ?, ** как вы создаете enrolledView, appcatalog, контроллеры поддержки ** также убедитесь, что ваш текущий ViewController встроен в навигационный контроллер, когда вы нажимаете на контроллер навигации – swiftBoy

+0

В смысле? Вы можете быть немного более ясными? –

ответ

0

Не могли бы вы дать нам немного больше вашего кода?

Например, как вы встроили свой класс в контроллер навигации?

Потому что, если ничего не появляется, что, вероятно, связано с тем, что navigationController является нулевым

0

Я думаю, что у вас есть две ошибки в коде.

Первый:

Вы не встроен контроллер в контроллер UINavigation.

Второй:

Вы не инициируя ваш контроллер представления, прежде чем ваш может перейти на it.First присвоить идентификатор раскадровки для каждого из контроллера представления. Поэтому измените свой код как:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
NSLog("It did enter the didselectRowAtIndexPath") 
if (indexPath.section == 0){ 
    let enrolledView = self.storyboard?.instantiateViewControllerWithIdentifier("identifier of your DetailsViewController") 
    navigationController?.pushViewController(enrolledView, animated: true) 
} 

if (indexPath.section == 1){ 
    let appcatalog = self.storyboard?.instantiateViewControllerWithIdentifier("identifier of your AppCatalogViewController") 
    navigationController?.pushViewController(appcatalog, animated: true) 
} 

if (indexPath.section == 2){ 
    let support = self.storyboard?.instantiateViewControllerWithIdentifier("identifier of your supportViewController") 
    navigationController?.pushViewController(support, animated: true) 
} 


} 
+0

Да. Я не вставлял его ... и изменил бы код, как вы сказали, и исправит это? –

+0

Я только что прочитал выше, что вы не используете раскадровку? Вы используете XIB? –

+0

Если вы используете XIB, загрузите файл nib как let enrolledViewArray = NSBundle.mainBundle(). LoadNibNamed («myXib», владелец: self, options: nil) let enrolledView = enrolledViewArray [0] navigationController? .pushViewController (enrolledView , animated: true) –