#iphone #objective-c #uinavigationcontroller #uitabbarcontroller
#iPhone #objective-c #uinavigationcontroller #uitabbarcontroller
Вопрос:
У меня есть приложение для iPhone с 2 вкладками. Это делегат моего приложения:
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Add the tab bar controller's current view as a subview of the window
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
Моя первая вкладка является подклассом UITableViewController
. Я хотел бы запустить новый контроллер просмотра, когда кто-то нажимает на строку моей таблицы. Я знаю, что это делается didSelectRowAtIndexPath
следующим образом:
TableViewDetailViewController *fvController = [[TableViewDetailViewController alloc] initWithNibName:@"TableViewDetailViewController" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:fvController animated:YES];
[fvController release];
fvController = nil;
Мое значение self.navigationController
равно нулю, поэтому ничего не попадает в стек просмотра. Где я должен создать свой NavigationController, чтобы было как можно меньше кода для изменения?
Ответ №1:
У нас есть прямое решение с использованием Interface Builder.
В Interface Builder перейдите к тому, xib
в который вы добавили tabBarController
, и удалите тот, tabBarItem
с которым вы подключили свой tableViewController
.
Теперь перетащите UINavigationController
из библиотеки в свой tabBar
и установите это navigationController
rootViewController
как свое tableViewController
.
Спасибо
Ответ №2:
Вместо того, чтобы устанавливать свой TableViewDetailViewController
в качестве одного из контроллеров просмотра ваших вкладок, вы должны создать UINavigationController
для каждой вкладки на вашей панели вкладок. Затем поместите свой TableViewDetailViewController в соответствующее UINavigationController
. в этом случае self.navigationController
будет указывать на действительный UINavigationController
.