2016-07-16 4 views
0

Во-первых, спасибо заранее! Во-вторых, у меня есть googled и проверенные форумы для ответа, который помогает, но не мог найти ничего, что помогло. Я знаю, что это область, о которой очень много спрашивают.Как сдать информацию из таблицы View to Detail View

Так что я пытаюсь передать информацию в контроллер подробного представления из представления таблицы. Информация находится на plist. Учебник, который я использовал для получения этого кода, является старым и использует xib. Использование раскадровки, он выдает ошибку ниже:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 

Я знаю, что это потому, что у меня нет файла XIb с именем «DetailViewController». Я хочу, чтобы это (и информация из plist) было нажато на мой «DetailViewController», который находится в моей раскадровке, но я не могу найти код, необходимый для этого.

Не могли бы вы помочь мне в этом? Какие изменения мне нужно сделать?

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

NSString *BibleVerses = [BibleReading objectAtIndex:indexPath.row]; 
if (!self.detailViewController) { 
    self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
} 
self.detailViewController.detailItem = BibleVerses; 
[self.navigationController pushViewController:self.detailViewController animated:YES]; 
} 
+0

Почему вы используете дополнительный наконечник, так как вы используете раскадровку в любом случае? И почему бы вам не использовать segue, который является наиболее удобным способом с наименьшим кодом. – vadian

ответ

0

Если ваш контроллер находится в раскадровке, вы можете использовать метод instantiateViewControllerWithIdentifier.

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

NSString *BibleVerses = [BibleReading objectAtIndex:indexPath.row]; 
if (!self.detailViewController) { 
    self.detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"]; 
} 
self.detailViewController.detailItem = BibleVerses; 
[self.navigationController pushViewController:self.detailViewController animated:YES]; 
} 
+0

Блестящий, отлично работает! Спасибо огромное! Я выбираю как ответ, когда таймер позволяет мне! –

0

Используйте этот код,

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

    NSString *BibleVerses = [BibleReading objectAtIndex:indexPath.row]; 
    UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    self.detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"YourViewControllerIdentifierName"]; 

    self.detailViewController.detailItem = BibleVerses; 
    [self.navigationController pushViewController:self.detailViewController animated:YES]; 
} 

надеюсь, что его полезно

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