从tabar多次链接到视图

时间:2013-09-27 17:15:43

标签: objective-c uitabbarcontroller

我正在尝试设置我的应用程序,因此我可以将多个tabbar项链接到同一个视图控制器,但是传入不同的参数来适当地设置视图。

我的设置如下     TabBarController         NavbarController - TabBarItem1             PeopleView         NavbarController - TabBarItem2             内容查看

我希望我的设置

TabBarController
    NavbarController1 - TabBarItem1
        Links to: PeopleView
    NavbarController2 - TabBarItem2
        Links to: ContentView
    NavbarController3 - TabBarItem3
        Links to: ContentView //Same VC as TabBaritem 2.

我已经尝试将下面的代码放在我的appdelage中并实现UITabBarControllerDelegate,但我的应用程序总是因此错误而崩溃

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-    [UITabBarController pushViewController:animated:]: unrecognized selector sent to instance 0x8fce7c0'

以下是我实施的代码:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

NSLog(@"controller class: %@", NSStringFromClass([viewController class]));
NSLog(@"controller title: %@", viewController.title);
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MediaList *mediaList = [storyboard  instantiateViewControllerWithIdentifier:@"SB_MediaList"];
[(UINavigationController*)self.window.rootViewController pushViewController:mediaList animated:YES];


}

我希望以正确的方式完成此任务,以避免为完全相同的功能提供三个类和屏幕。

对不起,如果这是一个非常基本的问题......

1 个答案:

答案 0 :(得分:0)

请尝试使用此方法,

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    DemoViewController *demoView = [storyboard  instantiateViewControllerWithIdentifier:@"DemoView"];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:demoView];
    NSMutableArray *viewsArray = [NSMutableArray arrayWithArray:self.viewControllers];

    if (viewController.tabBarItem.tag == 1) {
        //Load data for your demoView instance for tabBarItem 1
    } else if (viewController.tabBarItem.tag == 2) {
        //Load data for your demoView instance for tabBarItem 2
    }

    [viewsArray replaceObjectAtIndex:viewController.tabBarItem.tag withObject:navigationController];
    self.viewControllers = viewsArray;
}

我在这里上传了项目https://github.com/coch3/iOS---STCK-Q-19056515