私はSwiftこのスタックでMyWatchViewと呼ばれるUI構造体を持っています。
_ VStack (alignment: .center)
{
HStack
{
Toggle(isOn: $play)
{
Text("")
}
.padding(.trailing, 30.0)
.hueRotation(Angle.degrees(45))
if play
{
MyWatchView.self.playSound()
}
}
}
_
また、@ State private var play = false;もあります。そして、次のような関数playSound:
_static private func playSound()
{
WKInterfaceDevice.current().play(.failure)
}
_
タイプ '()'が '表示'に適合しないというエラーが発生します。プロトコルに準拠できるのは構造体/列挙型/クラス型のみです。これはおそらく、Swiftでの構造体の動作方法について理解していないものだと思います。タイマーを使用してサウンド再生機能をトリガーしようとしています。これは、iOSストーリーボードアプリtimer = Timer.scheduledTimer(timeInterval: interval, target: click class, selector: #selector(clickClass.repeatSound), userInfo: clickClass, repeats: switchView.isOn)
のビューコントローラークラスのコードです。
あなたはこれをやっています:
if play
{
MyWatchView.self.playSound()
}
View
sのみが期待されるコンテキストで。関数の戻り値の型はVoid
(または()
)、これがエラーが発生する理由です。
justToggle
をクリックしたときにサウンドを再生する場合は、代わりにButton
を使用することをお勧めします。
Button(action: {
MyWatchView.self.playSound()
}) {
Text("")
}
Toggle
が必要な場合(たとえば、Bool
変数を更新するため)、これを行うことができます:
Toggle(isOn: $play)
{
Text("")
}
.padding(.trailing, 30.0)
.hueRotation(Angle.degrees(45))
.onTapGesture {
MyWatchView.self.playSound()
}