iPhone: TableViewController nibName грешка с initWithNibName:bundle:

Имам динамична клетка UITableViewController и искам да натисна конкретен View Controller, когато някой докосне клетка. Така че се опитвам да използвам предварително направения метод

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

Но когато вляза в симулатора и докосна клетка, ето какво получавам:

"NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle [...] with name 'AffichageVotesQuestionDuMomentViewController'.

В рамките на метода имам това:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.

     AffichageVotesQuestionDuMomentViewController *detailViewController = [[AffichageVotesQuestionDuMomentViewController alloc] initWithNibName:@"AffichageVotesQuestionDuMomentViewController" bundle:nil];

    // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];

}

AffichageVotesQuestionDuMomentViewController е персонализиран изглед контролер, който създадох сам. Също така се опитах да създам друга произволна и получавам същия тип грешка. Ако задам initWithNibName: на nil, той преминава към контролер за изглед, който има лентата за навигация отгоре, но това е напълно черно.

Сега съм начинаещ програмист на iPhone и имам много лошо разбиране за писци, имена на писци и други подобни. Всяка помощ се оценява. Освен това не направих никакво преминаване в сценария или нещо подобно, тъй като изглежда, че създавам програмно контролера за изглед и го натискам по този начин. Ако все пак има добър начин да го направя с segue, аз също съм съгласен с това (но трябва да знам реда на докоснатата клетка).

Благодаря ти!


person Konrad    schedule 25.11.2012    source източник
comment
не наричате правилното име на xib или xib не е във вашия пакет   -  person Janub    schedule 25.11.2012
comment
Мисля, че правя всичко, което трябва. Имам този файл за контролер на изгледа, .h и .m, има правилното име, има всичко необходимо вътре... Е, как така не работи? Трябва ли да направя нещо с Storyboard?   -  person Konrad    schedule 25.11.2012


Отговори (1)


Тъй като използвате IB сторибордове, трябва да направите нещо подобно според мен:

UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"mystoryboard" bundle:nil];
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"AffichageVotesQuestionDuMomentViewController"];

... вместо да използвате "initWithNibName"-initializer, който се използва за класическия базиран на xib подход.

person Nenad M    schedule 25.11.2012
comment
Това работи :) Благодаря много. Можете ли да обясните защо трябва да правя това? Това е малко объркващо за мен (нямам представа какво е xib). - person Konrad; 25.11.2012
comment
Здравей Конрад! Това е просто начинът, по който нещата работят с разкадровките сега според мен! :) просто потърсете документация за него. - person Nenad M; 27.11.2012