IOS - 目标C - 如何从登录视图控制器中删除Tableview菜单?

时间:2015-05-22 12:18:38

标签: ios objective-c uitableview uiviewcontroller xcode6

在我的iOS项目中,有一个登录ViewController,如果用户拥有正确的凭据,则会将用户发送到 TabViewController

这个TabViewController有5个选项卡,第五个用于Logout,它将用户发送回Login ViewController,当然还清除了用户已填充的凭据。

enter image description here

我的问题是我的登录页面中显示了TableView的菜单。 如何在Login ViewController页面中删除此菜单?

我使用Xcode6&目标C

如果您需要我的问题的任何进一步解释/源代码,请随时询问。

注意:

一开始,我的意思是当Login ViewController首次显示给用户时,菜单不会显示。

enter image description here

5 个答案:

答案 0 :(得分:1)

事实证明,您应用的整个UI架构都基于UITabBarController。但是,在您的情况下,这不是一个很好的做法。我想建议你添加单独的模态控制器来呈现登录页面。

答案 1 :(得分:1)

尝试:

self.tabBar.hidden = YES;

答案 2 :(得分:1)

假设您正在使用故事库,我有给定的解决方案 我创建了一个示例应用程序并尝试复制您的问题,所以这里是我的故事板

StoryBoard

我设计它的方式我有一个单独的登录视图控制器和两个嵌入在tabbar控制器中的视图控制器(菜单列表和注销)。

如果您是故事板的新手,那么使用tabbarController嵌入viewControllers非常简单,首先选择视图控制器,然后转到Xcode中的编辑器菜单

Embedding View Controllers with TabbarController

好了,现在重新开始营业,我在登录界面按钮的IBAction上添加的代码如下所示 MainTabbar 是TabMaster控制器的storyboardID

 AppDelegate *appdel = [UIApplication sharedApplication].delegate;
 UIStoryboard *storyBoard = appdel.window.rootViewController.storyboard;

TabMasterController *tabController = [storyBoard instantiateViewControllerWithIdentifier:
@"MainTabbar"];
[appdel.window setRootViewController:tabController];

当我执行应用程序时,一切正常,我在登录屏幕上点击操作按钮后能够看到tabbar项目

TabBar Items

现在是时候为注销标签栏项编写一些代码了,所以我选择了分配给主标签栏控制器的视图控制器,并添加了UITabbarController的委托指导,看起来像是这样的

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
// Since i have two tabbar items 1 generally means logout in my case
if (tabBarController.selectedIndex ==1) {
    AppDelegate *appdel = [UIApplication sharedApplication].delegate;
    UIStoryboard *storyBoard = appdel.window.rootViewController.storyboard;

    ViewController *tabController = [storyBoard instantiateViewControllerWithIdentifier:
                                     @"LoginVC"];
    [appdel.window setRootViewController:tabController];
}
}

LoginVC 是Login View控制器的storyboardID

在我用来点击退出标签栏项目时添加上述代码后,我可以回到故事板中的登录界面。

希望有所帮助。

答案 3 :(得分:0)

您可以通过编程方式添加标签栏项目,也可以添加.gdbinit 如果以编程方式然后添加像

storyboard

self.tabBarController.viewControllers = [NSArray arrayWithObjects: [[UINavigationController alloc] initWithRootViewController:self.myContactsController], [[UINavigationController alloc] initWithRootViewController:self.searchController], [[UINavigationController alloc] initWithRootViewController:self.registrationController], [[UINavigationController alloc] initWithRootViewController:self.loginController], nil]; 设置为tabbarController

中的初始视图控制器

检查登录凭据后,成功

storyboard

答案 4 :(得分:0)

修正了它,它不是最佳解决方案,但它对我有用:

我做的是:

1-我从登录ViewController

删除了Tab Bar项目

2-我在表格视图屏幕中插入了退出按钮

3-我将表格视图屏幕中的segues添加到故事板中的登录屏幕。

这样,如果用户点击退出按钮,他将被定向到登录屏幕&除非他输入他的证书,否则不能回到原来的位置。

相关问题