2016-11-11 4 views
0

У меня есть PhotoBrowser (он наследует от UIViewController) как presentedViewController. Я представляю его от UITableViewController. PhotoBrowser представляет actionMainController (он наследует от UIAlertController), когда я постучал по кнопке. Я хочу позвонить другому UIAlertController, когда я выберу одно из действий в actionMainController и покажу второй UIAlertController сразу же после того, как его отклоненный, но блок завершения не работает. Я хочу добавить, что уволить actionMainController успешно, она работаетБлок блокировки Dissmiss не работает. Swift

class PhotoBrowser: SKPhotoBrowser { 

    // MARK: - Controllers 

    private var actionMainController = UIAlertController() 

    // MARK: - Lifecycle 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 


    // MARK: - override var 

    override var prefersStatusBarHidden: Bool { 
     return true 
    } 

    // MARK: - functions 

    func editAvatar() { 
     debugPrint("removePhoto") 

     actionMainController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) 

     actionMainController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) 

     let deleteAction = UIAlertAction(title: "Delete Photo", style: .destructive) { (action) in 
      self.deletePhoto() 
     } 
     let takePhoto = UIAlertAction(title: "Take Photo", style: .default) { (action) in 

     } 
     let choosePhoto = UIAlertAction(title: "Choose Photo", style: .default) { (action) in 

     } 
     actionMainController.addAction(deleteAction) 
     actionMainController.addAction(takePhoto) 
     actionMainController.addAction(choosePhoto) 

     present(actionMainController, animated: true, completion: nil) 
    } 

    private func deletePhoto() { 
     actionMainController.dismiss(animated: true) { 
      // TODO: it 
//   self.showDeleteActionSheet() 
     } 
     showDeleteActionSheet() 
    } 

    private func showDeleteActionSheet() { 
     let deleteActionController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) 
     deleteActionController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil)) 
     let deleteAction = UIAlertAction(title: "Delete Photo", style: .destructive) { (action) in 

     } 
     deleteActionController.addAction(deleteAction) 

     present(deleteActionController, animated: true, completion: nil) 
    } 
} 
+0

положить точки останова там, это дозвонились? – Tj3n

+0

, из которого вызывается метод 'deletePhoto' класса? –

+0

@ Точка прерывания Tj3n не вызвала – Alexander

ответ

1

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

actionMainController.dismiss(animated: true) { 

    self.showDeleteActionSheet() 
} 

Вместо этого вы должны сделать некоторую работу над обработчиком завершения действий как

let deleteAction = UIAlertAction(title: "Delete Photo", style: .destructive) { (action) in 

    self.showDeleteActionSheet() 
} 
Смежные вопросы