Нажмите UIViewController в UINavigationController из всплывающего окна
У меня проблема при попытке вставить новый контроллер представления в существующий контроллер навигации.
То, что я пытаюсь сделать, это сделать UIPopoverController
появляются при нажатии на навигацию UIBarButtonItem
и из этого "выпадающего меню" выберите пункт меню, который будет выдвигать соответствующий контроллер вида на "основной" контроллер навигации.
Я попробовал следующее, которое дает модальное. Но я хочу, чтобы мнение было изменено.Если выбрать толчок вместо модального, результат будет следующим.
Я также попытался сделать заказ UITableViewController
(на всплывающем окне), из которого я попробовал следующий код:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *dash = [storyboard instantiateViewControllerWithIdentifier:@"dash_nav"];
UIViewController *students = [storyboard instantiateViewControllerWithIdentifier:@"students"];
if (indexPath.row == 0) {
[dash pushViewController:students animated:YES];
// [[dash navigationController] presentViewController:students animated:YES completion:nil];
}
NSLog(@"%@", [dash title]);
NSLog(@"index = %i", indexPath.row);
}
Есть ли способ сделать то, что я пытаюсь сделать?
1 ответ
Этот код:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *dash = [storyboard instantiateViewControllerWithIdentifier:@"dash_nav"];
UIViewController *students = [storyboard instantiateViewControllerWithIdentifier:@"students"];
создает слишком много новых экземпляров. Вы должны использовать существующую раскадровку (self. storyboard
) и существующий навигационный контроллер. Контроллер навигации необходимо передать контроллеру табличного представления (который следует использовать, потому что раскадровка не имеет необходимой информации). Мы назовем это originatingNavigationController
новый @property
на контроллере представления таблицы.
Когда программа запускает показ всплывающего окна, установите ссылку контроллера навигации в контроллер представления назначения (представление таблицы).
Затем в didSelectRowAtIndexPath:
метод, который вы просто создаете students
ВК и толкни его:
UIViewController *students = [self.storyboard instantiateViewControllerWithIdentifier:@"students"];
[self.originatingNavigationController pushViewController:students animated:YES];
и тогда контроллер табличного представления должен отклонить себя (его popover).