Переход от UITableView в контейнере к новому UIViewController

Я пытаюсь перейти от UITableViewController, встроенного в контейнер, к другому UIViewController. Проблема в том, что Storyboard продолжает изменять размер нового UIViewController, чтобы он поместился в контейнер... Я новичок в переопределении PrepareForSegue и других, и у меня есть ощущение, что мне нужно это сделать... Первая попытка

Это то, что я попробовал первым, переход к SecondPracticeViewController исходит из первой ячейки в статической ячейке UITableViewController. Обратите внимание, что размер SecondViewController изменяется, чтобы соответствовать размеру контейнера.

Затем я настроил его так, чтобы переход исходил из PracticeTableViewContainer и назвал переход «SegueFromContainer».

SegueFromContainer

Это скриншот того, что я думаю, что мне нужно сделать. Что мне нужно сделать, чтобы заставить это работать? Я не знаю, что именно переопределить. Большое спасибо!


person Siriss    schedule 29.11.2012    source источник
comment
Какой переход вы пытаетесь сделать? На вашем втором изображении этот переход к полноразмерному контроллеру не может исходить из представления контейнера — у вас может быть только встроенный переход из представления контейнера, а тот, который вы показываете, — это толчок. Это должно исходить из контейнера представления таблицы практики (который является контроллером, а не представлением контейнера).   -  person rdelmar    schedule 29.11.2012
comment
Вы правы, это исходит из PracticeTableViewContainer. PracticeTableViewContainer — это UIViewController, встроенный в NavigationController. Он имеет контейнер со встроенным TableViewController. Я не могу получить переход от TableViewCell -> SecondPracticeViewController, потому что он всегда изменяет его размер, поэтому, основываясь на других сообщениях, я пытаюсь заставить PracticeTableViewContainer распознать взаимодействие TableViewCell и нажать переход к SecondPracticeViewController.   -  person Siriss    schedule 29.11.2012
comment
Самое простое, но я не знаю, хотите ли вы этого, — подключить ячейку табличного представления к SecondPracticeViewController с помощью модального перехода. Это даст вам полноценный контроллер.   -  person rdelmar    schedule 29.11.2012
comment
Хорошо, отлично, я посмотрю на это, но позволит ли это мне использовать его в моем NavigationController?   -  person Siriss    schedule 29.11.2012


Ответы (2)


Я только что попробовал кое-что и обнаружил, что если вы делаете толчок из TableViewController, SecondPracticeViewController отображается в полном масштабе, хотя в IB он выглядит маленьким. Итак, чтобы исправить это, вы можете изменить размер этого контроллера с «Inferred» на «Freeform» в инспекторе атрибутов — это позволит вам настроить размер его представления так, как вы хотите, чтобы вы могли компоновать подвиды визуально.

person rdelmar    schedule 29.11.2012
comment
Спасибо! Однако, похоже, он не сохраняет его в контроллере навигации... Мне нужно иметь возможность вернуться к контроллеру представления PracticeTableViewContainer. - person Siriss; 30.11.2012
comment
@Siriss, хм... у меня сработало нормально. Моя установка была такой же, как ваша первая картинка, за исключением изменения размера SecondPracticeViewController. У вас нет кнопки «Назад» после нажатия? - person rdelmar; 30.11.2012
comment
Сначала я этого не сделал .... и после некоторого устранения неполадок мне по какой-то причине пришлось добавить `self.navigationController.navigationBarHidden = NO;` в мой ViewDidLoad. Любые идеи, почему я вдруг должен сделать это? Он должен быть унаследован во время выполнения, но я не понимаю, как это сделать. - person Siriss; 30.11.2012
comment
Нет, я понятия не имею, почему. Мне не нужно было этого делать. - person rdelmar; 30.11.2012
comment
Да, я тоже до сих пор не знаю.... начинаю выяснять. Спасибо за вашу помощь! - person Siriss; 01.12.2012

Если вы решите сделать это последним способом, который вы упомянули в своем вопросе, вы можете переопределить tableView:didSelectRowAtIndexPath в своем tableViewController и вызвать

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.parentViewController performSegueWithIdentifier:@"Segue" sender:self];
}
person ayce    schedule 19.07.2014