Проблема iPhone SDK: загрузите TableView в TabBarControlled Views - PullRequest
1 голос
/ 22 июля 2010

У меня проблема, и я не могу найти решение на весь день.Я новичок в iPhone SDK, поэтому мне кажется, что я что-то упустил.

Мое приложение состоит из TabbedNavigation, имеющего три ViewControllers.Все работает как положено.Теперь я хочу открыть новый вид (предпочтительно из NIB), когда пользователь нажимает кнопку (а не кнопки вкладки ...).Метод действия кнопки вызывается, как и ожидалось.Однако я не загружаю новое (табличное) представление.

Я пытаюсь дать вам некоторый код, который объясняет мою ситуацию:

Сначала, в делегате моего приложения didFinishLaunchingWithOptions Я загружаю представление tabBarController (TabBarController является свойством делегата):

 // Add the tab bar controller's view to the window and display.
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];

Первый ViewController из TabController отображается, когда приложение запускается, как и ожидалось.Этот viewController имеет свой собственный класс ViewController, в котором находится метод действия для кнопки.Мой метод действия выглядит следующим образом:

-(IBAction)filtersButtonPressed:(id)sender {

  FiltersTableViewController *filtersViewController = 
    [[FiltersTableViewController alloc] initWithNibName:@"Filters" bundle:nil];

  [[[super tabBarController] navigationController] pushViewController:filtersViewController];
}

Это почему-то не работает ... Я, конечно, пробовал несколько вещей, но безуспешно.

Может кто-нибудь из вас, ребята, направит меня в правильном направлении?Не может быть так сложно просто перейти к новому виду нажатием кнопки ...

Заранее спасибо!

Chers, pawi

1 Ответ

0 голосов
/ 22 июля 2010

Предлагаем вам попробовать показать новый вид «Фильтры» в качестве модального контроллера вида.Попробуйте изменить код на:

-(IBAction)filtersButtonPressed:(id)sender {

   FiltersTableViewController *filtersViewController = 
      [[FiltersTableViewController alloc] initWithNibName:@"Filters" bundle:nil];
[self presentModalViewController:filtersViewController animated:YES];

. Это приведет к перемещению контроллера представления фильтров (хотя вы можете изменить эффект анимации, если хотите) поверх текущего представления.Чтобы избавиться от этого, когда пользователь закончил с представлением, вызовите

[self dismissModalViewControllerAnimated:YES];

Edit: Если вы действительно хотите использовать контроллер навигации, чтобы поместить представление в стек,использовать

[self.navigationController pushViewController:filtersViewController];
...