Как показать представление программным путем
Выше моей раскадровки. Первое представление подключено к ViewController, а второе не подключено ни к чему. Я знаю, как показать второй контроллер представления, если бы у меня была кнопка на первом. Я могу щелкнуть и перетащить с кнопки на второй вид, создав segue. Однако на этот раз я должен показать программный контроллер второго вида внутри ViewController.m. Например, когда вызывается некоторая функция myFunc, я хочу показать второй контроллер представления. Может кто-нибудь объяснить, как я могу это сделать?
Я думаю, что нужно знать следующее:
- Как ссылаться на второй контроллер представления в ViewController.m
- Как открыть второй контроллер представления
Спасибо!
UPDATE:
//setSelectedDate is myFunc. It lives inside myView.m, which is a subview of UIView
- (void)setSelectedDate:(NSDate *)newSelectedDate; {
NSLog(@"override worked");
[super setSelectedDate:newSelectedDate];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
UIViewController *firstController = [storyboard instantiateViewControllerWithIdentifier:@"InitialViewController"];
UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"MySecondViewController"];
[firstController presentViewController:myController animated:YES completion:nil];
}
я получаю следующее предупреждение, если я выше:
Предупреждение: Попытка представить на чей взгляд не в иерархии окон!
и из этого post Я считаю, что это потому, что я делаю это не в том месте. Как я могу решить эту проблему?
** Обновление 2: Я сделал следующее: **
- (void)setSelectedDate:(NSDate *)newSelectedDate; {
[super setSelectedDate:newSelectedDate];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
UIViewController *firstController = [storyboard instantiateViewControllerWithIdentifier:@"InitialViewController"];
[firstController performSegueWithIdentifier:@"GoToSecondViewController" sender:firstController];
предупреждение исчезает, но контроллер зрения еще не показывает. Это потому, что я вызываю это внутри представления вместо ViewController?
Является ли ваш второй вид представлением или контроллером? –
Это ViewController. Я понял, что мне нужно использовать performSegueWithIdentifier, но я не уверен, как получить ссылку «идентификатор». –
Затем вы можете захотеть, чтобы ваш вопрос был менее неоднозначным, чтобы помочь любому потенциальному ответчику :) –