[英]navigationBarItems “Type [view] cannot conform to 'View'; only struct/enum/class types can conform to protocols”
[英]how do i fix Type '()' cannot conform to 'View'; only struct/enum/class types can conform to protocols
嗨,我正在制作游戏,但如果 state 无法正常工作
现在我添加了程序的完整代码(contentView.swift)
希望它对我更有用
该代码是在 xcode 中制作的,该程序适用于 macos
编码在 xcode 和 swiftui
请不要使用此代码,其版权归我所有
import SwiftUI
struct ContentView: View {
@State private var sp = false
@State private var loaded = false
@State private var uname = ""
@State private var text = "input a number"
@State private var etext = ""
@State private var sats = ""
@State private var mbt = "select collor"
@State private var gameState = 0
@State private var data = 0
@State private var temp = 0
@State private var type = 0
@State private var collor = 0
@State private var intsats = 0
//@State private var password = ""
var body: some View {
VStack {
if sp == false {
Text("Alien entertaiment presentate\n\n")
Text("casino\n\n")
Button(action: {
self.sp = true
//self.loadEndings()
//self.load()
}) {
Text("Start")
}
Text("\n\n")
}else if sp == true && loaded == false {
TextField("user name", text: $uname)
//SecureField("pasword", text: $password)
Text(uname)
//Text(password)
Button(action: {
self.loaded = true
self.load()
}) {
Text("sign in")
}
}else if sp == true && loaded == true {
Text("\(data)")
Text("\n")
Text(etext)
if etext != "" {Text("\n")}
Text("\n")
//Text(text)
Text("\n")
if gameState == 0 {
MenuButton(mbt) {
Button("red", action: {self.mbt = "red"; self.collor = 1})
Button("black", action: {self.mbt = "red"; self.collor = 2})
}
TextField("a number", text: $sats)
Button(action: {
self.intsats = Int(self.sats) ?? 0
if self.intsats == 0 || self.intsats > self.data {
self.etext = "not valid number or you do not have enuf mony"
}else{
self.gameState = 1
}
}) {
Text("bet")
}
}else if gameState == 1
{
if self.rand() == self.collor
{ //Type '()' cannot conform to 'View'; only struct/enum/class types can conform to protocols
self.text = "you won"
self.data = 1
}
}
}
}
}
let defaults = UserDefaults.standard
func save()
{
defaults.set(self.data, forKey: uname)
}
func load()
{
self.data = defaults.integer(forKey: uname)
self.temp = data
if temp == 0 {
self.data = 86
}
}
func rand() -> Int
{
var type = 0
type = Int.random(in: 1..<3)
return type
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
操作只是归档
该游戏适用于 mac os catalina 并且可以用于可能所有可以在其上安装应用程序的 appels 东西
这是因为在 View 的body
中,您需要返回一个视图。 您不能像普通的 function 那样只执行计算等。
您可以删除此代码(它不返回视图,因此编译失败):
else if gameState == 1 {
if self.rand() == self.collor {
self.text = "you won"
self.data = 1
}
}
并将其放在您按钮的操作中:
if gameState == 0 {
...
TextField("a number", text: $sats)
Button(action: {
self.intsats = Int(self.sats) ?? 0
if self.intsats == 0 || self.intsats > self.data {
self.etext = "not valid number or you do not have enuf mony"
} else {
self.gameState = 1
if self.rand() == self.collor { // <- move it here
self.text = "you won"
self.data = 1
}
}
}) {
Text("bet")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.