从TabBarView切换回标准视图

时间:2010-12-03 15:58:13

标签: iphone objective-c

我已经实现了一个您登录的应用程序,一旦您登录它就会进入标签栏视图。但是,我想实现一个注销按钮,当用户按下按钮时,它会将它们带回登录视图。

我现在有以下代码,但它不起作用。正在调用UIBarButton,因为它生成NSLog输出到gdb。但它不会改变观点。

在我对标签栏的看法中。

- (IBAction) logoutButtonPushed {
    NSLog(@"Yes, I was pushed");
    [self.appdelegate logout];
}

然后在我的app delegate中。

//  Logout and return to the welcome view
- (void) logout {


    [self.tabBarViewController.view removeFromSuperview];
    [window addSubview:self.welcomeViewController.view];
    [window bringSubviewToFront:self.welcomeViewController.view];

    [userModel logout];
}

只是为了踢,这就是我如何将标签栏带到前面。

//  Switches to the tab bar view from either the welcome or registersuccess view
- (void) switchToTabBarView {

    [self.registerSuccessViewController.view removeFromSuperview];
    [self.welcomeViewController.view removeFromSuperview];
    [window addSubview:self.tabBarViewController.view];
    [window bringSubviewToFront:self.tabBarViewController.view];

}

任何帮助或改进我的代码的建议(我可能有许多不好的做法)都会受到欢迎。谢谢!

1 个答案:

答案 0 :(得分:1)

请参阅我的回答question

您不应该使用self,因为它不会引用标签栏控制器。而不是self,使用放置tabbar控制器的视图控制器的实例

AppDelegate.h

YourViewController *yourViewControllerObj;
@property(nonatomic,retain) YourViewController *yourViewControllerObj;

AppDelegate.m

@synthesize yourViewControllerObj;

YourViewController.m中,为AppDelegate实例设置对象:

- (void)viewDidLoad 
{
    appDelegate.yourViewControllerObj = self;
    //do what ever u want
}

然后在你的退出功能

- (IBAction) logoutButtonPushed {
  NSLog(@"Yes, I was pushed");
  loginScreen *loginScreenObj = [[loginScreen alloc] initWithNibName:@"loginScreen" bundle:[NSBundle mainBundle]];
  [appDelegate.yourViewControllerObj  presentModalViewController:loginScreenObj animated:YES];
  [loginScreenObj release];
}