3

我的应用程序当前有一个UINavigationController,我想UITabBarController在单击按钮时的某个时间点推送一个。我正在尝试在 Interface Builder 上创建它(而不是以编程方式)。

所有在线教程都展示了如何创建一个基于标签栏的应用程序,其中包括将 aUITabBarController拖入MainWindow.xib其中,这显然不是我想要的。

我所做的是创建一个UIViewController,它的 nib 文件,拖动一个UITabBarController. 现在将其推UIViewController送到导航控制器将显示一个空视图(它的空视图)。删除视图控制器中的视图将使应用程序崩溃。如何告诉UIViewController加载 aUITabBarController而不是它自己的视图?

对于那些对我投反对票的人:至少提供评论是体面的。这个问题不是一个糟糕的问题。问题是询问有关如何以非正统方式使用 UITabBarController 的建议。我尝试了大多数建议,但它们不起作用。如果您投反对票,请至少写一条评论。

4

7 回答 7

14

你可以看到这可能对你有帮助

因为这是您希望您的应用程序的样子: - 导航控制器 - 根视图控制器 - 其他视图控制器 - 选项卡栏控制器 - 选项卡下的第一个 VC - 选项卡下的第二个 VC - 选项卡下的第三个 VC - 更多视图控制器

在你想要 pushViewController 到 UITabBarController 的视图控制器中使用这个

//create a UITabBarController object
UITabBarController *tabBarController=[[UITabBarController alloc]init];

//FirstViewController and SecondViewController are the view controllers you want on your UITabBarController (Number of view controllers can be according to your need)
FirstViewController *firstViewController=[[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
SecondViewController *secondViewController=[[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

//adding view controllers to your tabBarController bundling them in an array
tabBarController.viewControllers=[NSArray arrayWithObjects:firstViewController,secondViewController, nil];

//navigating to the UITabBarController that you created
[self.navigationController pushViewController:tabBarController animated:YES];
于 2012-08-23T12:52:32.230 回答
1

教程可能会有所帮助。它带有一个示例代码

于 2012-08-23T09:09:04.740 回答
0

嗨,只需在应用程序委托中制作导航控制器和 tabBar 控制器。最初将 navController 添加到您的根视图..

[self.window addSubview:navigationController.view];  

并且每当您想添加标签栏时,请删除 navController 并添加 tabBarController。

-(void)addTabBarController
{
    AppDelegate *appdelegte =(AppDelegate*)[[UIApplication sharedApplication]delegate];

    [[[appdelegte navigationController] view]removeFromSuperview];

    [[appdelegte window]addSubview:[[appdelegte tabcontroller]view]];

    [[appdelegte tabcontroller]setSelectedIndex:0];
}  

有问题再问我..

于 2012-08-18T14:09:24.040 回答
0

获取标签栏控制器的 uiview 意味着创建一个带有标签的界面构建器,并将该标签栏 uivew 添加到您想要标签栏的类中

例如,在该 uiview 中采用 3 个标签的标签栏 uiview 在界面生成器中采用三个按钮

对于该类的每个导航都应添加此 uiview 类

-(IBAction)firt_button_pressed:(id)sender
{

}

-(IBAction)second_button_pressed:(id)sender
{

}
于 2012-08-22T07:24:15.880 回答
0

我记得我做过类似的事情......

UITableViewController如果您要使用UINavigationController“推动”它,我必须创建一个自定义来执行此操作。

仅在界面生成器中执行此操作可能有点棘手,我已经有一段时间没有使用它了,我确实记得正确进行操作有点像噩梦。

于 2012-08-22T13:04:57.910 回答
0

在 YourView 控制器中制作 tabBarController 的 IBOutlet

在 .h 文件中

#import <UIKit/UIKit.h>

@interface YourView : UIViewController
{
    IBOutlet UITabBarController *tabBarController;
}
-(IBAction)loadTabBar:(id)sender;
@end  

并在 .m 文件中

#import "YourView.h"
#import "FirstViewController.h"
#import "SecondViewController.h"

@implementation YourView

-(IBAction)loadTabBar:(id)sender
{
    FirstViewController *firstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    tabBarController = [[UITabBarController alloc] init];
    tabBarController.viewControllers = [NSArray arrayWithObjects:firstView, secondView, nil];
    [self.navigationController pushViewController:tabBarController animated:YES];
}
@end  

tabBarControllerIBOutlet必须连接到UITabBarController.xib 文件上的那个。还有UITabBarController两个名为FirstViewController,的视图控制器SecondViewController

于 2012-08-20T05:17:40.077 回答
0

问题是,正如我相信我在某处提到的那样,XIB 没有与之连接的 UIView。当在 XIB 文件中删除 UIView 并添加 UITabBarController 时,view必须将 XIB 的属性连接到UITabBarController的视图。我连接它并且它工作。这就是我获得 SIGTRAP 的原因。

于 2012-08-24T23:59:01.810 回答