UITabBarController в UINavigationController - PullRequest
0 голосов
/ 17 декабря 2011

Я пытаюсь поместить UITabBarController в UINavigationController (программно), это мой код:

UITabBarController *tabBarController = [[UITabBarController alloc] init];
HomeViewPhone *home = [[HomeViewPhone alloc] initWithStyle:UITableViewStylePlain];
home.title = NSLocalizedString(@"HOME",nil);
EventiPhone *eventi = [[EventiPhone alloc] initWithStyle:UITableViewStylePlain];
eventi.title = NSLocalizedString(@"EXPLORE", nil);
FavoritiPhone *favoriti = [[FavoritiPhone alloc] initWithStyle:UITableViewStylePlain];
favoriti.title = NSLocalizedString(@"FAVORITES",nil);
ProfiloPhone *profilo = [[ProfiloPhone alloc] initWithStyle:UITableViewStylePlain];
profilo.title = NSLocalizedString(@"PROFILE", nil);
[tabBarController setViewControllers:[NSArray arrayWithObjects:home,eventi,favoriti,profilo, nil]];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tabBarController];
[self.window addSubview:navController.view];

, но когда я нажимаю на один элемент TabBarItem, приложение вылетает с этой ошибкой

-[__NSCFString _tabBarItemClicked:]: unrecognized selector sent to instance 0x7934db0

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 20 января 2012

Использование

self.window.rootViewController = tabBarController;

Вместо

[self.window addSubview:navController.view];

Затем добавьте navBarControllers на любую вкладку, которая им нужна.

0 голосов
/ 21 июня 2014

С ARC: решается и с @property!

Более сложное приложение у меня есть: AppDelegate -> NavigationController -> TableViewController -> TabBarController

Сначала в AppDelegate, создайте TableViewCtrl и вставьте в NavCtrl

TableViewController *myTVC = [[TableViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *myNC = [[UINavigationController alloc] initWithRootViewController:myTVC];
[self.window setRootViewController:myNC];

Во-вторых, в методе TableViewCtrl didSelectRow (для моего использования) переместите pushViewController в TabBarCtrl

_myTBC = [[TabBarController alloc] init];
[[self navigationController] pushViewController:_myTBC animated:YES];

И последнее, свойство TabBarController в .h: это ключ!

@property (retain, nonatomic) UITabBarController * TabBar;

и создай .m, сделай сам ...

ViewController1 *VC1 = [[ViewController1 alloc] init];
ViewController2 *VC2 = [[ViewController2 alloc] init];
_TabBar = [[UITabBarController alloc] init];
NSArray *table = [NSArray arrayWithObjects:VC1,VC2,nil];
[_TabBar setViewControllers:table animated:YES];
[[self view] addSubview:[_TabBar view]];

Это здорово! Не требует модальных или других вещей ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...