Контроллер панели ввода iOS: мне нужно показать разные контроллеры представлений для неавторизованного пользователя

У меня есть контроллер панели вкладок с 3 вкладками: Поиск, Сообщения, Моя страница

Уполномоченный пользователь может увидеть некоторую информацию на всех трех вкладках.

Но для неавторизованного пользователя – когда он нажимает на сообщения или на мою страницу – я хочу показать это:

Пожалуйста, войдите в систему или зарегистрируйтесь [вход в систему] [регистрация кнопки]

Я не хочу показывать это как модальный, я хочу держать панель вкладок внизу. Нажав на [button sign-in] увидите окно модального входа.

Итак, каков правильный подход для этого? Нужно ли каким-то образом создать многоразовый контроллер представлений? Если да, как мне показать его для многих вкладок в контроллере панели вкладок, а затем после входа в систему вернуться к обычным контроллерам?

3 Solutions collect form web for “Контроллер панели ввода iOS: мне нужно показать разные контроллеры представлений для неавторизованного пользователя”

Вы могли бы иметь контроллер вида для «Моя страница» как пустой вид, проверить статус входа в ViewWillLoad (в разделе «Моя страница VC»), затем на основе AUTHORIZED / UNAUTHORIZED вы можете загрузить один из двух XIB в VC.

В качестве альтернативы вы можете динамически изменять панель вкладок на основе состояния входа. При загрузке вкладка «Войти сейчас» будет удалена, а вкладка «Моя страница» может быть добавлена. Взгляните на что-то подобное, я написал:

 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; if([prefs boolForKey:@"is_logged_in"]) { NSMutableArray * vcs = [NSMutableArray arrayWithArray:self.viewControllers]; [vcs removeObjectAtIndex:2]; LoginVC * myPage = [[LoginVC alloc] init]; [vcs addObject:myPage]; [self setViewControllers:vcs animated:YES]; } 

Примечание. Чтобы использовать вышеуказанный код, вам нужно сделать свой UITabBarController настраиваемым классом и добавить его в ViewDidLoad

Использовать методы UITabBarControllerDelegate

 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ return NO;// if unauthorized } - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ } 

Для вас есть много подходов. Как только это Simple:

  • Добавьте представление в свой ключ и держите его скрытым. Это представление должно содержать все ваши сообщения и кнопку. Сделайте это в AppDelegate.

Предоставьте этот код в

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions UIView *view = [[UIView alloc]initWithFrame:self.window.frame]; [view setBackgroundColor:[UIColor colorWithWhite:0.2 alpha:0.7]]; UIButton * loginButton = [UIButton buttonWithType:UIButtonTypeCustom]; [loginButton setTitle:@"Sign In" forState:UIControlStateNormal]; [loginButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; [loginButton setBackgroundImage:GETIMAGE(@"loginNormal", @"png") forState:UIControlStateNormal]; [loginButton setBackgroundImage:GETIMAGE(@"loginPressed", @"png") forState:UIControlStateHighlighted]; [loginButton setFrame:CGRectMake(100, 300, 100, 40)]; [loginButton addTarget:self action:@selector(LoginMe:) forControlEvents:UIControlEventTouchUpInside]; [view addSubview:loginButton]; UIButton * cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; [cancelButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; [cancelButton setTitle:@"Cancel" forState:UIControlStateNormal]; [cancelButton setBackgroundImage:GETIMAGE(@"loginNormal", @"png") forState:UIControlStateNormal]; [cancelButton setBackgroundImage:GETIMAGE(@"loginPressed", @"png") forState:UIControlStateHighlighted]; [cancelButton setFrame:CGRectMake(100, 350, 100, 40)]; [cancelButton addTarget:self action:@selector(DismissMe:) forControlEvents:UIControlEventTouchUpInside]; [view addSubview:cancelButton]; [[[UIApplication sharedApplication] keyWindow] addSubview:view]; view.center = [[UIApplication sharedApplication] keyWindow].center; [view setTag:666666]; [view setAlpha:0.0]; 
  • Внедрите свои методы DismissMe и LoginMe
  • Теперь нажимаем на что-то, как вы сказали *, когда он нажимает на сообщения или мою страницу *

Добавьте этот код, если пользователь несанкционирован.

 [[[UIApplication sharedApplication] keyWindow] bringSubviewToFront:[[[UIApplication sharedApplication] keyWindow] viewWithTag:666666]]; [[[[UIApplication sharedApplication] keyWindow] viewWithTag:666666] setAlpha:1.0]; 
  • Теперь в реализации LoginMe вы можете сделать что-то вроде этого Modal.

     UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController; if([self.window.rootViewController isKindOfClass:[UITabBarController class]]) { self.loginController = [[MyLoginViewController alloc]init]; [topController presentViewController:self.loginController animated:YES completion:nil]; } 

вот скриншот: – Мой домашний экран

Домашний экран

  • SignIn Отмена, если неавторизованный.

SignIn Отмена Если неавторизованный.

Надеюсь, это поможет.

  • Нажмите другой контроллер представления в представление UITabBarController
  • Изменение шрифта в UITabBarItem
  • TabBarController didSelectViewController не работает
  • Как получить функциональность шаблонов навигации на основе программирования Swift
  • Столбец последней строки отключен под управлением tabbarcontroller
  • UITabBarController moreNavigationController item image (изображение UITableViewCell)
  • Swift: navigationController возвращает ноль
  • Динамические вкладки вкладки IOS
  • ABPeoplePickerNavigationController с UITabBarController не отображается правильно в iOS8
  • UISplitViewController внутри панели вкладок
  • iOS Storyboard UISplitViewController Seque to Full Screen
  • Приложение UITabbar с разными ориентациями
  • Interesting Posts

    инструмент с открытым исходным кодом для создания макета для приложения IOS

    Удалить наблюдателя NSNotificationCenter

    UIImage cv :: Преобразование Mat с альфа-каналом

    перехватить копию, вставить, определить popover в UIWebView

    Изменение одного свойства в переменной вызывает подписи к другим свойствам. RxSwift

    PDF для создания изображений в ios

    Есть ли API JSON CocoaPods?

    Радости didFailLoadWithError UIWebview

    Как установить цвет оттенка состояния на iOS 6?

    Xcode 6: ошибка «Simulator in Use» показывает, что симулятор НЕ используется

    Как я могу добавить UIView над видимой областью UITableView?

    Установите метки названий кнопок в виде таблицы из массива, полного строк

    Равное расстояние между UIButtons с использованием языка визуального формата

    MPMusicPlayerController: объедините iPodMusicPlayer и applicationMusicPlayer, чтобы предотвратить продолжение следующего трека

    Состояние AVPlayerItem AVPlayerStatusFailed при воспроизведении видео

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.