Как раскрутить переход с помощью просмотра предупреждений в Swift?

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

@IBAction func unwindToDelete ( segue: UIStoryboardSegue ) {

    let alertView = UIAlertController(title: "Delete?", message: "Are you sure you wante to delete?", preferredStyle: .ActionSheet)

    let deleteAction = UIAlertAction (title: "Delete", style: .Destructive ) { alertAction in

        self.deleteChoice = true
    }

    let cancelAction = UIAlertAction (title: "Cancel", style: .Cancel ) {  alertAction in

    }

    alertView.addAction(deleteAction)
    alertView.addAction(cancelAction)

    self.presentViewController(alertView, animated: true, completion: nil)

}

Но если я это сделаю, в этом коде произойдет сбой из-за последней строки кода.

Это ошибка:

2015-04-30 14:59:45.605 PhotosCollection[4624:182995] 
popToViewController:transition: called on <UINavigationController 0x7a67aeb0> 
while an existing transition or presentation is occurring; the navigation 
stack  will not be updated. 

Как я могу завершить представление предупреждений, имея возможность раскрутить переход.

Спасибо


person Bahram Ghebray    schedule 30.04.2015    source источник
comment
Похоже, вы вызываете раскрутку перехода, пока анимация представлена ​​на месте... Попробуйте раскрутить ее после установки определенной задержки...   -  person Nilesh Patel    schedule 30.04.2015
comment
Вы пытались добавить обработчик на кнопку, чтобы после перехвата события «удалить» и затем раскрутить?   -  person Miknash    schedule 30.04.2015


Ответы (1)


Вы поднимаете тревогу после того, как произошла раскрутка. Вы хотите иметь возможность вообще не выполнять раскрутку, если пользователь решит отменить удаление. Я бы предложил следующее:

  1. Вместо того, чтобы привязывать переход к раскрутке к кнопке удаления, вместо этого подключите ее к значку контроллера представления в верхней части контроллера представления, чтобы вы могли вызывать раскрутку программно. В этом ответе показано, как это сделать: Настройка перехода к раскрутке. Дайте переходу раскрутки идентификатор, например "doUnwind".
  2. В @IBAction для кнопки удаления поместите предупреждение, спрашивающее пользователя, действительно ли он хочет удалить.

  3. В обработчике кнопки удаления вызовите раскрутку перехода программно.

        @IBAction func deleteButton (button: UIButton) {
    
            let alertView = UIAlertController(title: "Delete?", message: "Are you sure you wante to delete?", preferredStyle: .ActionSheet)
    
            let deleteAction = UIAlertAction (title: "Delete", style: .Destructive ) { alertAction in
    
                 self.performSegueWithIdentifier("doUnwind", sender: self)
            }
    
            let cancelAction = UIAlertAction (title: "Cancel", style: .Cancel ) {  alertAction in
    
            }
    
            alertView.addAction(deleteAction)
            alertView.addAction(cancelAction)
    
            self.presentViewController(alertView, animated: true, completion: nil)
    
        }
    
person vacawama    schedule 30.04.2015