0

UITabBarController4 つのタブがあるログイン ビューがあります。私が望むのは、パスワードが空であるか間違っている場合、ユーザーはタブバーコントローラーではなく同じビュー (ログインビュー) にとどまるように求められることです。つまり、パスワードが OK (空ではなく、正しい) の場合にタブ バーを表示できるようにしたいと考えています。提供されたパスワードが正しくなるまで、ログイン ビューを表示し続けることはできますか? 何か案は?

4

3 に答える 3

0

あなたが説明しているのは、モーダルビューコントローラーです。既存のログイン コントローラーがある場合は、それを提示します。

[someViewController presentViewController:loginController animated:YES completion:nil]

これにより、 がloginController他のすべてのコントローラーの上に配置されます。ユーザーが正しいパスワードを入力したら (そのときだけ!)、それを閉じる必要があります。

[self dismissViewControllerAnimated:YES completion:nil];

loginControllerにタイトル バーが必要な場合は、必ずUINavigationControllerで囲み、代わりにナビゲーション コントローラーを表示してください。

于 2013-04-25T13:13:30.650 に答える
0

私が理解しているように、あなたはいつかタブバーを無効にしたいと思っています。

使えUITabBarControllerば使える

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    return NO; 
}

または無効にすることができますuserInteractionEnabled

myTabBar.userInteractionEnabled = NO;

たとえば、サブビューを追加UITabBarControllerして、タブバーをフェードアウトすることもできます

UIView *view = [[UIView alloc] initWithFrame:self.view.bounds];
view.backgroundColor = [UIColor blackColor];
view.alpha = 0.3f;
[self.tabBarController.view addSubview:view];
[view release];
于 2013-04-25T13:11:50.757 に答える
0

YourAppDelegate.m:

@interface YourAppDelegate()
@property( nonatomic, retain ) UITabBarController *tabBarController;
@property( nonatomic, retain ) UIViewController *loginViewController;
- (void)allocateAndShowLoginViewController;
- (void)allocateAndShowMenuController;
@end
@implementation YourAppDelegate
@synthesize tabBarController;
@synthesize loginViewController;
#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];           
    [self.window makeKeyAndVisible];
    [self allocateAndShowLoginViewController];       
    return YES;
}

- (void)allocateAndShowLoginViewController{
     // Show Login View Controller (for example:)
     // My Sample login view controller uses delegate to report when user has been logged in
     self.loginViewController = [[[UIViewController alloc] initWithDelegate:self] autorelease];
     self.window.rootViewController = loginViewController;
}  

- (void)allocateAndShowTabBarController{
    self.tabBarController = [[[UITabBarController alloc] init] autorelease];

    UINavigationController      *viewController1 = [[[UINavigationController alloc] initWithRootViewController:[[[UIViewController alloc] init] autorelease]] autorelease];

    UINavigationController      *viewController2 = [[[UINavigationController alloc] initWithRootViewController:[[[UIViewController alloc] init] autorelease]] autorelease];

    self.tabBarController.viewControllers = @[viewController1, viewController2];
    self.tabBarController.customizableViewControllers = nil;

    self.window.rootViewController = self.tabBarController;
}


#pragma mark - loginViewControllerDelegate
- (void)loginViewControllerDidLogin:(PSLoginViewController*)controller{
    [self allocateAndShowMenuController];
}

そんな感じ

于 2013-04-25T13:14:11.940 に答える