我在这个堆栈中有一个名为MyWatchView的Swift 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)
}
我收到类型'()'的错误,不符合'View';只有struct / enum / class类型可以符合协议,我认为这可能是我在Swift中使用struct的方式不了解的东西。
我正在尝试使用计时器来触发播放声音功能。这是我的iOS故事板应用timer = Timer.scheduledTimer(timeInterval: interval, target: click class, selector: #selector(clickClass.repeatSound), userInfo: clickClass, repeats: switchView.isOn)
答案 0 :(得分:6)
您正在这样做:
Void
在仅需要()
的情况下。该函数的返回类型为Toggle
(或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()
}
(例如,更新import React, {useState, useEffect, Fragment} from "react"
变量),可以执行以下操作:
return (
<Fragment>
{renderYoutubePlaylistItems(youtubePlaylistItems)}
</Fragment>
)