类型 '()' 不能符合 'View';只有 struct/enum/class 类型可以符合协议;使用 SwiftUI 调用函数
Type '()' cannot conform to 'View'; only struct/enum/class types can conform to protocols; calling functions with SwiftUI
我有一个名为 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 中工作的方式。
我正在尝试使用计时器来触发播放声音功能。这是我的视图控制器 Class 中的代码,来自我的 iOS 故事板应用程序 timer = Timer.scheduledTimer(timeInterval: interval, target: click class, selector: #selector(clickClass.repeatSound), userInfo: clickClass, repeats: switchView.isOn)
您正在这样做:
if play
{
MyWatchView.self.playSound()
}
在预期只有 View
的上下文中。函数的 return 类型是 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()
}
我有一个名为 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 中工作的方式。
我正在尝试使用计时器来触发播放声音功能。这是我的视图控制器 Class 中的代码,来自我的 iOS 故事板应用程序 timer = Timer.scheduledTimer(timeInterval: interval, target: click class, selector: #selector(clickClass.repeatSound), userInfo: clickClass, repeats: switchView.isOn)
您正在这样做:
if play
{
MyWatchView.self.playSound()
}
在预期只有 View
的上下文中。函数的 return 类型是 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()
}