Кнопка "Назад" не появляется на нажатом UIViewController
У меня есть UITableViewController. Когда я нажимаю на ячейку, я хочу открыть новый вид. Это отлично работает, но новый вид не имеет кнопки назад. Почему это?
TableViewCode:
if([[NSUserDefaults standardUserDefaults] boolForKey:@"isLoggedIn"])
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
ProfileViewController* profileViewController = [[ProfileViewController alloc] initWithNibName:@"ProfileViewController" bundle:nil];
profileViewController.message = [NSDictionary dictionaryWithObjectsAndKeys:cell.textLabel.text, @"user_login", @"default", @"message_source", nil];
switch(indexPath.row) {
case kUsernameRow:
[self.navigationController pushViewController:profileViewController animated:YES];
[profileViewController release];
break;
case kAboutRow:
break;
case kTOSRow:
break;
}
}
3 ответа
Если ваш контроллер табличного представления создан из пера, его заголовок по умолчанию @""
(обратите внимание: нет nil
, но пустая строка).
У кнопки "Назад" есть ошибка, из-за которой она не отображается, если заголовок предыдущего контроллера в стеке навигации является пустой строкой, поэтому в контроллере табличного представления необходимо установить для заголовка либо nil
или какая-то строка в коде, или какая-то строка в Интерфейсном Разработчике (не может установить это в nil
там афаик).
Из документации Apple:
Элемент панели кнопок в левой части панели навигации позволяет вернуться к предыдущему контроллеру представления в стеке навигации. Контроллер навигации обновляет левую часть панели навигации следующим образом:
Если новый контроллер представления верхнего уровня имеет пользовательский элемент кнопки левой панели, то этот элемент отображается. Чтобы указать пользовательский элемент кнопки левой панели, установите свойство leftBarButtonItem элемента навигации контроллера представления.
Если контроллер представления верхнего уровня не имеет пользовательского элемента кнопки левой панели, но элемент навигации предыдущего контроллера представления имеет действительный элемент в свойстве backBarButtonItem, панель навигации отображает этот элемент.
Если пользовательский элемент кнопки панели не указан ни одним из контроллеров представления, используется кнопка возврата по умолчанию, и ее заголовок устанавливается равным значению свойства title предыдущего контроллера представления, то есть контроллера представления на один уровень ниже стек. (Если в стеке навигации только один контроллер представления, кнопка возврата не отображается.)
Убедитесь, что на вашем контроллере навигации включена панель навигации. Нажмите на панель навигации под контроллером навигации в IB и убедитесь, что "скрытый" не отмечен. Если этот флажок установлен, панель навигации не будет отображаться, поэтому кнопка "Назад" также будет невидимой.