Подтвердить что ты не робот

Связывание нового диспетчера представлений с раскадрой?

Возможно, это простое решение, но я не могу понять.

Я использую раскадровки для интерфейса.

Я начинаю с контроллера панели вкладок, но до того, как пользователю разрешено использовать приложение, пользователь должен аутентифицироваться самостоятельно через loginview, который по умолчанию будет нажат.

Я хочу настроить loginview на той же раскадровке, но я не могу разобраться, как связать контроллер вида с раскадрой и моим кодом.

Что я сделал:

  • Создайте новый подкласс UIViewController через файл > новый > новый файл.
  • Перетащите новый пользовательский интерфейс UIViewController в панель рассказов
  • Установите класс на вкладке пользовательского класса
  • перетаскивает UILabel для целей тестирования.
  • запустить

Нет метки...

4b9b3361

Ответ 1

Потяните за новый UIViewController, который будет действовать как контроллер входа в систему на MainStoryboard. В инспекторе атрибутов измените идентификатор на LoginViewController (или что-то подходящее). Затем добавьте

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
    [vc setModalPresentationStyle:UIModalPresentationFullScreen];

    [self presentModalViewController:vc animated:YES];
}

для первого контроллера представления, и экран входа будет загружен из вашего раскадровки и представлен.

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

Ответ 2

Ответ Скотта Шервуда выше - самый правильный ответ, который я нашел после многого поиска. Хотя очень небольшое изменение в соответствии с новым SDK (6.1), presentModalViewController показывает устаревшее.

Здесь очень небольшое изменение в ответе.

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
    HomeViewController * hvc = [sb instantiateViewControllerWithIdentifier:@"LoginView"];
    [hvc setModalPresentationStyle:UIModalPresentationFullScreen];
    [self presentViewController:hvc animated:YES completion:nil]; 

Ответ 3

Я новичок в этой области. Но если первый контроллер представления является контроллером навигационного представления, а его rootviewcontroller - это контроллер табличного представления. Если вы хотите нажать контроллер вида, например LoginViewController, когда вы нажимаете на ячейку, а также хотите вернуться к представлению таблицы с помощью панели навигации. Я рекомендую этот способ:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  {

   UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
   UIViewController *controller = [sb instantiateViewControllerWithIdentifier:@"LoginViewController"];
   [self.navigationController pushViewController:controller   animated:YES];
}

Таким образом, вы можете иметь навигацию.

Кстати, я не знаю, почему появится такая проблема, которую вы спросили. Думаю, когда в коде создается логинконтроллер, его представление не является представлением в раскадровке. Если кто-то знает причину, скажите, пожалуйста! спасибо!