SwiftUIでは入力ダイアログはサポートされない件
2019年6月から開始されたSwiftUIですが、触ってみた感じ、かゆいところに手が届かないなぁと思いました。
発端は、入力ダイアログを使おうと思って、調べてみたらSwift UIではAlert表示はできるが、ユーザーから入力させるよなテキストフィールドは追加できないとのこと。
うーん。
SwiftUIで完結できると記載されている記事をありましたが、エラーになってしまいうまく動きませんでした。
面倒なので、エラー内容を追うことはしませんでした。m(__)m↓↓
alert — SwiftUIでTextFieldをAlertに追加する方法は?
解決策としては、
UIViewControllerRepresentable プロトコルを継承して、UKit の UIAlertController をラップしたViewを作成することで実装すれば良いとのこと。
下記サイトに記載されているコードを完コピで動きました。
【SwiftUI】TextField付きAlertを表示する – .NET ゆる〜りワーク
ただし、TextFieldAlertViewが要素の一部として認識されてしまい、レイアウトが崩れてしまうので、サイズを0にすることで解決しました。
TextFieldAlertView(
text: $text,
isShowingAlert: $isShowingAlert,
placeholder: "",
isSecureTextEntry: false,
title: "名前登録",
message: "名前を入力してください",
leftButtonTitle: "キャンセル",
rightButtonTitle: "登録",
leftButtonAction: nil,
rightButtonAction: {
if item.contains(text) {
alertD()
} else {
registDataName(name: text)
item = getDataName()
}
}
)
.frame(width: 0, height: 0, alignment: .center)
早いとこアプデで追加されるといいなぁー