4

У меня есть UINavigationController, который входит в ViewController, который загружает данные. Этот ViewController затем переходит к TabViewController. Этот TabViewController имеет две вкладки, каждая вкладка переходит к другому UITableViewController. Эти два TableViewController затем переходят к тому же самому DetailsViewController.
Теперь при перемещении в обратном направлении от DetailVC я получаю эту ошибку:
Перемещение назад через ошибку UINavigationController

nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview'.

Также оба TableViews настроены так же, но вид снизу таблицы начинается в верхней части рамы таким образом, его частичное затемняется на панели навигации.

+1

Я бы хотел опубликовать код, но я считаю, что это структурная проблема, с которой я сталкиваюсь здесь. Не знаю точно, какой код для публикации будет полезен. Пытался опубликовать образ моей раскадровки, но мне нужно больше очков повторения, чтобы сделать это. Кроме того, я уже дома ... – Snick

+2

Выяснил это. Сег выполнялся дважды в каждом UITableViewController. Однажды из самой ячейки и снова на didSelectRowAtIndexPath. – Snick

ответ

2

У меня есть табличный вид и контроллер панели поиска на нем. Я создал push segue на ячейке представления таблицы и выполнил push-on, чтобы программно выбрать элемент поиска через контроллер поиска. При запуске исправления исключенных исключений. Это исключение происходит, когда вы выполняете такие же выходите дважды за раз.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: 
(NSIndexPath*)indexPath 
{ 
if (tableView == self.searchDisplayController.searchResultsTableView) 
{ 

    [self performSegueWithIdentifier:@"showDetail"sender:self]; 
} 
} 

Так как это было выполнять ту же SEGUE два раза для выбора одного вида ячейки таблицы, созданной в раскадровке, а другой для результата поиска выбора соты. Так проверьте, когда для выполнения SEGUE

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 
{ 
if (self.tableView == self.searchDisplayController.searchResultsTableView) 
{ 

    [self performSegueWithIdentifier:@"showDetail"sender:self]; 
    return YES; 
} 

return NO; 
} 

Это работало отлично.

+1

Эй, большое спасибо с моей стороны. У меня была та же проблема, которая вызывала у меня головную боль! Я отправил ответ на свой вопрос здесь: http://stackoverflow.com/a/20827783/2580805, с обратной ссылкой на этот вопрос/ответ. – DerWOK

+0

У меня такая же проблема, и я не использую рассказ. как исправить на уровне кода. Пожалуйста, дайте мне знать, если вам нужна информация о кодах. – selva

+0

Возможно, вы можете нажать ViewController перед появлением вида, то есть viewDidAppear в вашем коде. Пожалуйста, обратитесь к [link] (http://stackoverflow.com/questions/5525519/iphone-uinavigation-эмиссионный вложенный-нажимная анимация-кан-результат-в-поврежденного-NAVIGA). – iGauravK

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