iOS / Xcode 4: просмотр не загружается

#iphone #xcode #ios #xcode4

#iPhone #xcode #iOS #xcode4

Вопрос:

Это действительно расстраивает, поскольку я возился с предыдущими версиями Xcode и делал это раньше, но, поиграв с новым приложением сейчас, оно по какой-то причине не работает.

У меня есть приложение, открытое для UITableView, и я хочу, чтобы оно загружалось в подробный UIView, как только я выберу ячейку. Однако, когда я выбираю ячейку в симуляторе iPhone, она просто выделяет ячейку синим цветом и не загружает представление.

Вот код, который я использую в RootViewController:

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
WorkoutViewController *workoutViewController;
workoutViewController = [[WorkoutViewController alloc] initWithNibName:@"WorkoutViewController" bundle:nil];
workoutViewController.workoutName = [workouts objectAtIndex:indexPath.row];
[self.navigationController pushViewController:workoutViewController animated:YES];
[workoutViewController release];
workoutViewController = nil;
  

У меня есть представление, связанное с владельцем файла в файле WorkoutViewController.xib. Когда я ввожу точку останова в @implementation WorkoutViewController, она достигает этой точки останова, но переходит к строке @synthesize, а затем сразу переходит обратно к [self.NavigationController … и т.д.]; и никогда не возвращается обратно к файлу WorkoutViewController.m .

Комментарии:

1. Я не вижу ничего плохого в том, что вы делаете. Возможно, нам нужно увидеть немного больше кода. Запускается didSelectRowAtIndexPath (как указывает точка останова), и причина, по которой он переходит в @synthesize, заключается в том, что я предполагаю, что у вас есть workoutName в качестве свойства в workoutViewController.

Ответ №1:

Я бы предположил, что вы не установили ViewController в качестве делегата TableView. Чтобы проверить, откройте XIB-файл ViewController и щелкните правой кнопкой мыши FilesOwner . В разделе Referencing Outlet обычно к вашему delegate компьютеру подключены « data и TableView исходный код»». Если это не так, перетащите New Referencing Outlet в свой TableView.

Если я ошибаюсь и все они подключены, возможно, вам захочется поставить точку останова в начале вашего didSelectRowAtIndexPath метода. Останавливается ли отладчик на этом, как только вы выбираете строку?

Возможно, также стоит упомянуть, что точка останова в @implementation обычно не имеет особого смысла, вы скорее захотите поместить ее в метод, подобный init . Кроме того, даже если вы сейчас используете Xcode 4, это вряд ли является причиной вашей проблемы, это больше похоже на проблему реализации.

Надеюсь, это поможет, если вам нужна дополнительная помощь, просто дайте мне знать!

Ответ №2:

Ого! Проблема решена. Я забыл фактически поместить RootViewController в навигационный контроллер на MainWindow.xib. Ценю ответы.