2012-04-26 4 views
0

Я пытаюсь сделать так, чтобы у меня была панель вкладок внизу экрана, и она всегда там. Я также хочу, чтобы, если я «нажму» на какое-то меню на одной из вкладок, он даст вам возможность вернуться назад, таким образом, контроллер навигации и контроллер панели вкладок.Использование навигационного контроллера с контроллером табуляции

Я все еще не понимаю iOS, поэтому ответ, который я нашел, меня смущает.

Это Ответ: Having a UITabBar AND a UINavigationController in an app?

Так как же я могу осуществить это? Я предполагаю, что я меняю этот метод в приложении App Delegate,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    UIViewController *viewController1, *viewController2; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     viewController1 = [[CFSDFirstViewController alloc] initWithNibName:@"CFSDFirstViewController_iPhone" bundle:nil]; 
     viewController2 = [[CFSDSecondViewController alloc] initWithNibName:@"CFSDSecondViewController_iPhone" bundle:nil]; 
    } else { 
     viewController1 = [[CFSDFirstViewController alloc] initWithNibName:@"CFSDFirstViewController_iPad" bundle:nil]; 
     viewController2 = [[CFSDSecondViewController alloc] initWithNibName:@"CFSDSecondViewController_iPad" bundle:nil]; 
    } 
    self.tabBarController = [[UITabBarController alloc] init]; 
    [self.tabBarController setDelegate:self]; 
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

Спасибо за вашу помощь!

ответ

2

Прежде всего, вам не нужно вручную настраивать имя ниба. Вы можете просто назвать их CFSDFirstViewController~iphone.xib и CFSDFirstViewController~ipad.xib. Затем вы можете позвонить [[CFSDFirstViewController alloc] init] и позволить iOS сделать остальное для вас. Для информации см. iOS Supports Device-Specific Resources.

О своем вопросе вы можете вставить только UINavigationController в пределах UITabBarController. Для того, чтобы сделать это обернуть viewController1 в UINavigationController, как следующее:

CFSDFirstViewController viewController1 = [[CFSDFirstViewController alloc] init]; 
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:viewController1]; 

, а затем использовать navController вместо viewController1 как folliwing

self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController, nil]; 

Проверьте код, потому что я написал вручную. Обратите внимание на память, если вы используете проект без ARC.

Надеюсь, это поможет.

Смежные вопросы