Как проверить конфиденциальность пользователя в приложении на основе вкладок? - PullRequest
1 голос
/ 31 марта 2012

Я создаю приложение для iphone на основе вкладок, вся информация на каждой вкладке связана с пользователем, что означает, что пользователь должен войти в систему, прежде чем перейти на каждую вкладку. Я поместил ввод имени пользователя / пароля в первую вкладку и сохраню конфиденциальность пользователя в цепочке ключей после успешного входа в систему. Однако, как лучше всего проверить это, прежде чем пользователь войдет в другие вкладки? и запретить неавторизованному пользователю заходить на другие вкладки кроме вкладки логин? Я не хочу делать эту проверку в каждом контроллере представления.

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Это можно сделать, используя UITabBarControllerDelegate.

Реализуйте это, например. в вашем UIApplication делегате и назначьте его вашему UITabBarController.

Заголовок AppDelegate:

@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>
{
    //[...]
}
//[...]
@end

Реализация AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //[...]

    //instanciate and configure your tabbarcontroller
    //[...]

    //assign this instance as the delegate of our tabbarcontroller
    tabBarController.delegate = self;
}

Следующий метод вызывается всякий раз, когда пользователь выбирает какую-либо вкладку. Возврат NO означает, что выбор фактически не должен происходить. Например, в этой ситуации вы можете отобразить предупреждение с просьбой сначала войти в систему.

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    //is the user logged in and did the user select any but the first tab?
    if (!userLoggedIn &&
        [tabBarController.viewControllers indexOfObject:viewController] != 0)
    {   //nope->...
        //force the user to the first tab
        tabBarController.selectedIndex = 0;
        //prevent the originally chosen tab selection
        return NO;
    }
    //user is logged in, it is safe to select the chosen tab
    return YES;
}
1 голос
/ 31 марта 2012

Вы можете использовать метод в классе Singleton (как в делегате приложения).На каждой вкладке вы можете проверить, является ли пользователь логином, например

if (appdelegate.userLogine) {// Пользователь является логином, отображающим представление

} else {// Post Notification

}

...