Связывание нового диспетчера представлений с раскадрой?
Возможно, это простое решение, но я не могу понять.
Я использую раскадровки для интерфейса.
Я начинаю с контроллера панели вкладок, но до того, как пользователю разрешено использовать приложение, пользователь должен аутентифицироваться самостоятельно через loginview, который по умолчанию будет нажат.
Я хочу настроить loginview на той же раскадровке, но я не могу разобраться, как связать контроллер вида с раскадрой и моим кодом.
Что я сделал:
- Создайте новый подкласс UIViewController через файл > новый > новый файл.
- Перетащите новый пользовательский интерфейс UIViewController в панель рассказов
- Установите класс на вкладке пользовательского класса
- перетаскивает UILabel для целей тестирования.
- запустить
Нет метки...
Ответы
Ответ 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];
}
Таким образом, вы можете иметь навигацию.
Кстати, я не знаю, почему появится такая проблема, которую вы спросили. Думаю, когда в коде создается логинконтроллер, его представление не является представлением в раскадровке. Если кто-то знает причину, скажите, пожалуйста! спасибо!