переход к созданию нового экземпляра контроллера представления Swift

У меня есть приложение с четырьмя контроллерами представления. Навигация между 1, 2 и 3 в порядке, но из контроллера представления 1 у вас есть возможность перейти к 2 или к 4 (это мои настройки). У меня есть переход от 1 к 4. Затем я использую раскрутку, чтобы вернуться . но когда я использую переход обратно к 4, он создает новый экземпляр 4.

Мой вопрос: есть ли способ получить доступ к тому же экземпляру контроллера представления, который был у пользователя в прошлый раз.


person c3pNoah    schedule 16.04.2017    source источник
comment
Вы можете сохранить ссылку на этот контроллер представления и нажать его, а не использовать переход, если вы используете навигационный контроллер, вы обычно просто нажимаете новый экземпляр, настраивая его по мере необходимости.   -  person Paulw11    schedule 17.04.2017
comment
извините, я вроде новичок и не знаю, что вы имеете в виду. не могли бы вы объяснить подробнее   -  person c3pNoah    schedule 17.04.2017


Ответы (1)


Точно так же, как @Paul11 сказал в комментариях, вы должны сохранить ссылку на UIViewController, который вы пытаетесь отправить, если хотите, чтобы к тому же экземпляру был доступ.

Скажем, например

var someViewController = SomeViewController() // << this is at the class level scope

func someSampleFunc() {
    // doing this would create a new instance of the `SomeViewController` every time you push
    self.navigationController?.pushViewController(SomeViewController(), animated: true)

    // whereas if you use the variable which is at the class level scope the memory instance is kept
    self.navigationController?.pushViewController(someViewController, animated: true)
}

Другой пример для экземпляров

class Bro {
    var name = "Some Name"

    func sayDude() {          
        // since `name` is a class level you can access him here

        let dude = "DUUUUUUUDE" // this variable's lifetime only exists inside the `sayDude` function, therefore everytime you call `sayDude()` a new instance of `dude` is created

        print(name)
        print(dude)
    }

    func doBackflip() {
         sayDude() //

         print(name + " does backflip") // since `name` is a class level you can access him here
    }
}
person Zonily Jame    schedule 17.04.2017
comment
@c3pNoah отметьте меня как правильный ответ и проголосуйте, если это помогло, спасибо - person Zonily Jame; 19.04.2017