TableView поможет подтолкнуть пользовательское представление - PullRequest
0 голосов
/ 17 августа 2010

Итак, я пытаюсь просто перейти к следующему уровню табличного представления, выполнив это:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 1) {
        FiltersController *aFiltersCont = [[FiltersController alloc] init];
        aFiltersCont.displayedFilters = [appDelegate.groupedBusiness allKeys];
        aFiltersCont.currentLevel = self.currentLevel + 1;
        [self.navigationController pushViewController:self animated:YES];
    }
}

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

ОК. Я собираюсь поставить еще один источник, чтобы попытаться помочь ...

Внутри контроллера основного вида у меня есть этот код, чтобы сделать поповер из кнопки:

   // Create and configure the filters controller.
FiltersController *aFiltersController = [[FiltersController alloc] initWithStyle:UITableViewStylePlain];
 self.filtersController = aFiltersController;
filtersController.appDelegate = self.appDelegate;



UINavigationController *filtersNavController = [[UINavigationController alloc] initWithRootViewController:filtersController];


UIPopoverController *filtersPopover = [[UIPopoverController alloc]     initWithContentViewController:filtersNavController];
self.filtersPopoverController = filtersPopover;
filtersPopoverController.delegate = self;

и затем у меня есть код, который я сначала разместил в своем классе filtersController. Это помогает вообще?

Ответы [ 4 ]

1 голос
/ 17 августа 2010
[self.navigationController pushViewController:self animated:YES];

Должно быть

[self.navigationController pushViewController:aFiltersCont animated:YES];
0 голосов
/ 18 августа 2010

Если вы просто отображаете свой подкласс UITableViewController внутри UIPopoverController, UINavigationController не будет создан для вас автоматически.Возможно, вам придется изменить код, в котором вы создаете UIPopoverController, примерно так:

MyTableViewController *table = [[[MYTableViewController alloc] init] autorelease];
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:table] autorelease];
myPopover = [[UIPopoverController alloc] initWithContentViewController:nav];

Тогда вы сможете без проблем вставлять и вставлять навигационные контроллеры в стек.

0 голосов
/ 17 августа 2010

Вы можете быть озадачены индексом.Первый индекс - 0, а не 1, так что, возможно, вы хотите indexPath.row == 0?

Кроме того, вы должны выпустить aFiltersCont перед возвратом (вы теряете FiltersController и все, что у него есть при каждом запуске этогоМетод.

Так может это?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) {
        FiltersController *aFiltersCont = [[[FiltersController alloc] init] autorelease];
        aFiltersCont.displayedFilters = [appDelegate.groupedBusiness allKeys];
        aFiltersCont.currentLevel = self.currentLevel + 1;
        [self.navigationController pushViewController:aFiltersCont animated:YES];
    }
}
0 голосов
/ 17 августа 2010

вы нажимаете self, что является ссылкой на текущий контроллер вида.Вы должны изменить строку нажатием на следующее, если aFiltersCont - это viewController, к которому вы пытаетесь перейти.

[self.navigationController pushViewController:aFiltersCont animated:YES]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...