Mac OSX Отклонить контроллер нескольких представлений, представленный Show Segue

У меня есть контроллер представления, в котором я представляю другой контроллер представления с переходом типа «шоу». Я хочу разрешить представление нескольких копий представления, а затем, когда контроллер представления представления закрыт, отклонить любое из представлений, представленных сегментом представления, которые все еще открыты. Если я использую всплывающее окно, то все предыдущее существующее представление отклоняется, и это не то действие, которое я ищу. Есть ли способ сделать это?


person svjim    schedule 13.09.2018    source источник


Ответы (2)


Это решение, которое я придумал. В основном захватите массив контроллеров представления в методе prepareforsegue, затем в методе viewwilldisappear выполните итерацию по массиву и закройте окна, связанные с контроллерами представления.

готовиться

    override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    print("in prepare for seque")

    if (segue.identifier!.rawValue == "viewSegmentsSegue"){
        let viewController = segue.destinationController as! NSViewController
        self.segmentsArray?.append(viewController)
        }

}

viewwilldisappear ()

    override func viewWillDisappear() {
    for segments:NSViewController in segmentsArray!{
        segments.view.window?.close()

    }
}
person svjim    schedule 14.09.2018
comment
Это единственное решение, которое работает для macos. Удивительный! - person Houman; 13.02.2020

Я не совсем понимаю ваш вопрос, но, возможно, вы могли бы использовать вспомогательный контроллер представления внутри фактического контроллера представления.

person Toby Clark    schedule 13.09.2018
comment
Я хочу знать, как отклонить несколько представлений, созданных с помощью перехода шоу из представления представления в методе IBAction или viewwilldisappear для Mac OSX. Представление A создает несколько копий представления B. Как мне закрыть все существующие представления B из представления A? - person svjim; 14.09.2018
comment
Привет, извините, я не смог помочь, так как я не знаком с кодированием для Mac OS X. К сожалению, я не знаю, как еще вы могли бы это сделать ... Может быть, попробуйте использовать документацию Apple? - person Toby Clark; 15.09.2018