iOS — pushViewController нажимает на нулевой контроллер представления

Я пытаюсь сделать так, чтобы UITableViewCell при выборе приводил к другому viewController, перенося на него данные. Тем не менее, это просто приводит к нулевому контроллеру представления

В Main.storyboard я создал контроллер представления и присвоил ему класс «DetailedTweetViewController».

http://postimg.org/image/hf7wg0ilp/ — изображение, показывающее классы и идентификатор

http://postimg.org/image/f0w0ezjzv/ — изображение без переходов

Вроде все нормально подключилось, вот мой код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSDictionary *currentTweet = _userPosts[indexPath.row];

    DetailedTweetViewController *tweetDetailedViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailedTweetStoryboard"];

    tweetDetailedViewController.statusID = currentTweet[@"id"];

    [self.navigationController pushViewController:tweetDetailedViewController animated:YES];


}

Я понятия не имею, почему это не работает...

Это изображение ошибки: http://postimg.org/image/cjb595s8j/.

ОБНОВИТЬ

Я попытался нажать непосредственно на контроллер представления без передачи данных:

DetailedTweetViewController *detailedViewController = [[DetailedTweetViewController alloc]init];

[self.navigationController pushViewController:detailedViewController animated:YES];

Но я не получил никакой ошибки, просто пустой экран: http://postimg.org/image/7i02wst9v/< /а>

ОБНОВИТЬ

Инициализирован текущий контроллер представления, который имеет didSelectRowAtIndexPath в другом контроллере представления с именем viewController

это код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    FeedViewController *feedViewController = [[FeedViewController alloc]init];

    feedViewController.currentUserAccount = [_twitterAccounts objectAtIndex:indexPath.row];

    feedViewController.navigationItem.hidesBackButton = YES;

    [self.navigationController pushViewController:feedViewController animated:YES];

}

person Nathaly    schedule 30.12.2013    source источник
comment
можете ли вы зарегистрировать self.storyboard и tweetDetailedViewController, чтобы проверить их на нулевые значения?   -  person Hani Ibrahim    schedule 30.12.2013
comment
это (null) но почему...   -  person Nathaly    schedule 30.12.2013
comment
какой self.storyboard или tweetDetailedViewController   -  person Hani Ibrahim    schedule 30.12.2013
comment
Хорошо, как вы инициализировали текущий контроллер представления? тот, у которого есть метод didSelectRowAtIndexPath? ... код?   -  person Hani Ibrahim    schedule 30.12.2013
comment
@HaniIbrahim, я обновил вопрос...   -  person Nathaly    schedule 31.12.2013


Ответы (2)


Получите такую ​​​​раскадровку вместо self.storyboard

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];// Find name of storyboard in your project plist

 DetailedTweetViewController *tweetDetailedViewController = [storyboard  instantiateViewControllerWithIdentifier:@"DetailedTweetStoryboard"];
person Aditya Deshmane    schedule 30.12.2013
comment
Замените MainStoryboard на имя вашей раскадровки. - person Aditya Deshmane; 30.12.2013
comment
И убедитесь, что идентификатор раскадровки контроллера — DetailedTweetStoryboard. - person Aditya Deshmane; 30.12.2013
comment
спасибо, но я до сих пор не понимаю, как я мог просто (распределить и инициализировать) добраться до текущего контроллера представления, но чтобы перейти от этого контроллера представления к другому контроллеру представления, я должен сделать это... - person Nathaly; 31.12.2013

Вам также нужно будет инициализировать 'feedViewController' из раскадровки.

Вы не можете использовать self.storyboard для инициализации viewController, если только представление, для которого вы вызвали self.storyboard, также уже не инициализировано из раскадровки.

Например, чтобы инициализировать подробный TweetViewController из feedViewController через раскадровку... Тогда feedViewController также должен быть уже инициализирован из раскадровки.

person Hani Ibrahim    schedule 30.12.2013
comment
но поскольку я не использовал раскадровки для инициализации feedviewcontroller, не должен ли я инициализировать другой контроллер представления без раскадровок, как я сделал в первом обновлении? - person Nathaly; 31.12.2013
comment
Вы можете инициализировать контроллер представления двумя способами... (alloc и init) или (storyBoard)... (alloc и init) не будет использовать контроллер представления, который находится в раскадровке, он будет использовать файл пера, если он нашел, и поэтому у вас черный экран... Чтобы использовать раскадровку через self.storyboard, вы также должны загрузить все предыдущие представления через раскадровку - person Hani Ibrahim; 31.12.2013
comment
Или вы можете просто попробовать то, что сказал wuii... Который выделяет новую доску раскадровки для инициализации вашего контроллера представления - person Hani Ibrahim; 31.12.2013
comment
Благодарность! но мне интересно, почему это сработало, нажав на этот текущий контроллер представления из предыдущего, но я не могу нажать с этого контроллера представления на другой таким же образом, используя alloc и init - person Nathaly; 31.12.2013
comment
Вы уверены, что feedViewController загружается из раскадровки? Вместо этого может использоваться файл nib? Потому что я почти уверен, что feedViewController не загружается из раскадровки - person Hani Ibrahim; 31.12.2013
comment
спасибо, но я до сих пор не понимаю, как я мог просто (распределить и инициализировать) добраться до текущего контроллера представления, но чтобы перейти от этого контроллера представления к другому контроллеру представления, я должен сделать это... - person Nathaly; 31.12.2013