结合UITabController& UINavigation控制器以编程方式http://t.co/R52RlUL UITabController& UINavigation控制器以编程方式

时间:2011-04-12 18:33:41

标签: iphone ios uitableview uinavigationcontroller xcode4

我用UITableViews创建了一个UItabbarcontroller和2个视图,只是使用代码(没有IB的东西),我现在想在顶部添加一个导航栏,其中包括添加和编辑按钮,但是我似乎在绊倒和吹我的应用程序或仅将导航控制器添加到第三个选项卡。

这是我添加标签栏和切换视图的主要代码

仅供参考 - 我正在使用XCode4

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.mainTabBar = [[UITabBarController alloc] init];

// create the 2 views
tableViewController* vc1 = [[tableViewController alloc] init];
tableViewController2* vc2 = [[tableViewController2 alloc] init];

// put them in an array
NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];

// for the tab bar
mainTabBar.viewControllers = controllers;

// Add the tab bar controller's current view as a subview of the window
[self.window addSubview:self.mainTabBar.view]; 

// Override point for customization after application launch.
[self.window makeKeyAndVisible];
return YES;
}

1 个答案:

答案 0 :(得分:2)

你想在哪里使用导航控制器?您必须为UITabBarController中的每个选项卡创建一个。

将navigationController与其堆栈上的第一个视图控制器一起添加。试试这个:

// create the controllers for UITabBarController
tableViewController *vc1 = [[[TableViewController alloc] init] autorelease];
navController *nav1 = [[[UINavigationController alloc] initWithRootViewController:vc1] autorelease];

tableViewController *vc2 = [[[TableViewController alloc] init] autorelease];
navController *nav2 = [[[UINavigationController alloc] initWithRootViewController:vc2] autorelease];

// put them in an array
NSArray *controllers = [NSArray arrayWithObjects:nav1, nav2, nil];

// rest of your code

另请注意,您需要释放您分配或保留的任何内容。您可以像我在初始化时添加autorelease那样执行此操作,也可以在将它们添加到controllers数组后明确释放它们。

然后,您可以使用navigationItemloadView方法为每个视图控制器配置viewDidLoad,具体取决于您的实施方式。