2016-10-09 27 views
1

最初に、ディスマイスビューの完了ブロックが実行されると、ユーザーはビューが終了したか、前に表示されたのを確認した後ですか?終了ビューの完了ブロックが実行されると、 Swift

私は完成ブロック内のメッセージでトーストを作るのにこのコードを持っていますが、このビューを閉じた後にトーストを見ることはないからです。

 self.dismiss(animated: true, completion: { 
     self.view.makeToast(message: "Employee has been assigned successfully.", duration: 2.0, position: HRToastPositionCenter as AnyObject, title: "Succeeded!") 
}) 

私が望むのは、ユーザーがビューが完全に解除されたときにトーストを見ることができますか?

これを行う方法?

+0

あなたが親に提示コントローラからイベントを委任し、(解任とmakeToast)がそれを処理することが強くおself.view.makeToastにブレークポイントを追加 – alexburtnik

答えて

0

あなたは自己についての却下を呼び出しているので、そのすべてのリファレンスはデアロックになります。あなたのself.viewはもう存在しません。

+0

self.viewはまだ(存在しないことができます)現時点でラインとチェックのエンティティ – iCaramba

+0

試みを撮影しているため –

0

完了ブロックは、View Controllerが終了した後に実行されます。これはあなたのビューが画面に表示されなくなったことを意味します。私はあなたがその画面の内側にトーストをレンダリングしたいと思うが、それは画面外であるため不可能である。

0

あなたの解散されたビューの内側にトーストが表示されます。ビューが消えたので、あなたはそのトーストを見ることはできません。破棄されたビューの後に表示される次の画面でトーストを表示したい場合があります。

+0

ありがとうございますが、現在のビューから次のビューへトーストを表示する方法 – Zizoo

+0

現在表示しているビューを現在表示していませんでしたか? –

3

イベントを提示されたコントローラから親に委譲して、それを処理できます。

EmployeePickerViewControllerで

(またはものは何でもあなたのモーダルコントローラが呼び出された):あなたがモーダル提示したときにMainViewControllerで

delegate?.employeeAssigned() 

:従業員の割り当てが終了すると

@protocol EmployeePickerDelegate { 
    func employeeAssigned() 
} 

class EmployeePickerViewController { 
    weak delegate: EmployeePickerDelegate! 
} 

はちょうどデリゲートのメソッドを呼び出す

employeePicker.delegate = self 
present(employeePicker, animated: true, completion: nil) 

下記のMainViewControllerで:

extension MainViewController: EmployeePickerDelegate { 
    func employeeAssigned { 
     dismiss(animated: true, completion: { 
      self.view.makeToast(message: "Employee has been assigned successfully.", duration: 2.0, position: HRToastPositionCenter as AnyObject, title: "Succeeded!") 
     }) 
    } 
} 
関連する問題