私はUIAlertController
を持っています。このオプションでは配列からデータが取り込まれ、ユーザーに提示されます。ユーザーは、アラートからオプションを選択します。この後、別の警告が表示され、ユーザーに確認ボタンがある確認メッセージが表示されます。2つのUIAlertControllersを連続して提示しようとしています
myAlert.addAction(UIAlertAction.init(title: item, style: .Default, handler: {
(UIAlertAction) in
self.chosenBusiness.append(businessNameData[item]!)
}))
self.presentViewController(myAlert, animated: true, completion: nil)
上記のコードは、配列からデータを収集し、myAlertのアクションにプッシュします。上のコードはforループの内部です。
この後、私は一番上のビューコントローラを取得する関数を使い、次の警告を押します。
let top = topMostController()
let alertController = UIAlertController(title: "Location pinned", message: "You've successfully pinned this location, good work!", preferredStyle: UIAlertControllerStyle.Alert)
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) {
(result : UIAlertAction) -> Void in
print("OK")
}
alertController.addAction(okAction)
self.presentViewController(myAlert, animated: true, completion: nil)
top.presentViewController(alertController, animated: true, completion: {
_ in
})
Iは受信エラーがある:それは 割り当て解除され、許可されておらず、未定義の動作を引き起こすかもしれないビューコントローラのビューをロードしようと
。 UIAlertController:0x1535b1cd0。
誰かがこれを手伝ってくれますか?
なぜ2番目のコードブロックで 'self.presentViewController(myAlert、animated:true、completion:nil)'を呼び出すのですか?最初のコードブロックに最初のアラートを表示していませんか?また、第1のアラートの完了ブロックを使用して、第2のアラートを表示することができますか(条件によっては、ユーザー操作に基づいています)。 – wottle
元のAlertControllerのアクションハンドラ内で、確認AlertControllerのプレゼンテーションを呼び出すことができます。一番上のコントローラで実行する必要はありません。元のものと同じように、自分で実行してください。さらに、アクションクロージャにはサイクルが保持されます。閉じた状態での暗黙の強い保持を防ぐためには、[無所属の自己]または[弱い自己]として自分自身を捉える必要があります。 – SArnab
私はmyAlertのself.presentViewControllerを移動しましたが、影響はありません。 SArnab、あなたはより多くのことを詳しく説明できますか? – vkrishnan23