如何在 viewController 中使用 UITabbar?

Posted

技术标签:

【中文标题】如何在 viewController 中使用 UITabbar?【英文标题】:How can i take a UITabbar in a viewController? 【发布时间】:2012-12-11 21:20:18 【问题描述】:

如果我直截了当,那么我的问题是我有一个带有两个按钮的 UIViewController。

    按钮一 --(onclick 必须导航到)--->UITabbarController 带有 4 个 UITabbar 项目,或者我可以在我的新 UIViewController 中使用 UITabbar

    李>

    按钮二 --(OnClick 必须导航到)--->UITabbarController 其中第一个 tabbaritem 将包含 UITableView 或者我可以在我的新 UIViewController 中使用 UITabbar第一个TabbarItem 将包含UITableView

我怎么做这个???示例代码将更有帮助,这两种建议都没有。如果您需要任何澄清,请随时询问。

致以最诚挚的问候 恶魔

【问题讨论】:

@user427969 不,我没有使用故事板。 你尝试了什么???尝试使用情节提要构建它:) 不,我不能使用故事板。我必须以编程方式进行。 【参考方案1】:

首先,如果您希望在单击按钮时推送另一个视图控制器,则需要有一个 NavigationController。您需要执行的步骤如下

    从 iPhone 上的 MasterDetail 应用开始 在 xib 文件中,放置按钮并将它们连接到正确的方法

    在视图中确实出现了视图控制器有如下代码

    self.tbc1 = [[UITabBarController alloc] init];
    self.tbc2 = [[UITabBarController alloc] init];
    
    
    UIViewController *tbc1vc1 = [[UIViewController alloc] init];
    UIViewController *tbc1vc2 = [[UIViewController alloc] init];
    UIViewController *tbc1vc3 = [[UIViewController alloc] init];
    
    UITableViewController *tbc2vc1 = [[UITableViewController alloc] init];
    UIViewController *tbc2vc2 = [[UIViewController alloc] init];
    UIViewController *tbc2vc3 = [[UIViewController alloc] init];
    
    [self.tbc1 setViewControllers:[NSArray arrayWithObjects:tbc1vc1,tbc1vc2,tbc1vc3, nil]];
    [self.tbc1 setViewControllers:[NSArray arrayWithObjects:tbc2vc1,tbc2vc2,tbc2vc3, nil]];
    

    当然,您必须在视图控制器中为 tbc1 和 tbc2 定义属性。

    在应用委托中执行以下操作

        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
    ViewController *myViewController = [[ViewController alloc] init];
    self.viewController = [[UINavigationController alloc] initWithRootViewController:myViewController];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
    

    将.h文件中的UIViewController改成UINavigationController之类的

    @property (strong, nonatomic) UINavigationController *viewController;
    

    拥有两个按钮并将其连接到以下方法

    -(IBAction)tbc1Clicked
    [self.navigationController pushViewController:self.tbc1 animated:YES];
    
    
    -(IBAction)tbc2Clicked
        [self.navigationController pushViewController:self.tbc2 animated:YES];
    
    

【讨论】:

首先感谢您的回答。我可以理解您的解决方案,但有两个问题,首先我现在无法使用 masterdetail 应用程序。其次我无法在此应用程序中使用任何笔尖。那么如果我使用空应用程序还有其他选择吗??? 说明你现在在你当前的应用程序中的什么位置,我可以从那里带你走。 我处于初始状态很不幸,但确实如此......我已经制作了我的空应用程序,在应用程序委托中我已经将 uiviewcontroller 作为包含我的两个按钮的 rootviewcontroler......当我点击在第一个按钮上,它将导航(必须导航非模态)我到另一个控制器,该控制器将包含 4 个带有导航栏的 uitabbar 项目。现在何时单击第二个按钮它将移动到另一个 uitabbar 项目控制器。清楚吗? 你的应用代理应该有一个导航控制器,如果你想让其他视图控制器轻松地在它之上。我将编辑答案以显示您需要做什么 谢谢..请做...我坚持下去了。

以上是关于如何在 viewController 中使用 UITabbar?的主要内容,如果未能解决你的问题,请参考以下文章

如何选择在 View 和 ViewController 中放置哪些代码?

如何在 ViewController 中调用视图?

有办法在两个 viewController 之间共享 UI 元素吗?

如何在 UIPageViewController 中重用相同的 ViewController?

ios 7中的UI Popover ViewController?

使用多个 ViewController、Xcode 将代码连接到情节提要中的 UI