Замените segue, создав новый экземпляр - PullRequest
1 голос
/ 03 апреля 2012

У меня возникла проблема с приложением SplitViewController. Когда я выбираю строку из таблицы в главном представлении, я заменяю подробное представление заменой. Проблема в том, что каждый раз, когда это происходит, создается новый экземпляр / перезагружается контроллер подробного представления. Есть ли какой-нибудь способ, которым я могу иметь это, таким образом это заменит подробный вид с предыдущим экземпляром, если это уже было создано. Мне бы хотелось, чтобы состояние для подробных видов запоминалось, например, для ввода в текстовые поля.

Ответы [ 3 ]

2 голосов
/ 08 июня 2012

Не может быть сделано. Segue всегда будет создавать экземпляр контроллера вида

1 голос
/ 25 июня 2013

Я использую замену segue, но в MasterVC я реализую

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {

    if ([identifier isEqualToString:@"showCalculatorViewController"]) {

        if (self.splitViewController) {

            NSObject *currentDetail = [self.splitViewController.viewControllers lastObject];

            if ([currentDetail isKindOfClass:[RootCalcViewController class]]) {

....

Затем я заполняю новые свойства существующего VC и возвращаю NO.

Но у меня нет UINAvigationController в качестве моего начального контроллера подробного представления, так как я управляю навигацией от masterVC.

Кроме того, в AppDelegate, didFinishLaunchingWithOptions должна быть настроена правильная деталь VC. Сгенерированный код предполагает, что это UINavigationController. Аналогично в сгенерированном MasterViewController, viewDidLoad. Это сэкономит вам некоторые сбои приложения, если вы замените детальный UINAvigationController.

Когда я загружаю разные контроллеры представления, я позволяю "Заменить сегменты", чтобы заменить их.

0 голосов
/ 19 ноября 2015

Или - вы можете просто заставить ваш DetailController реализовывать шаблон Singleton и перенаправлять любые вызовы на + new, + alloc или тому подобное на ваш метод singleton.

...