[英]Swift - Expected Declaration In declaration of 'View Controller'
NOTE: I am self teaching myself. 注意:我正在自学。 I have been working with Swift for the last several days. 最近几天,我一直在与Swift合作。 I have an app that is teaching me the basics. 我有一个正在教我基础知识的应用程序。
Ok, so I have been reading up and I found 2 possible reasons for this error. 好的,所以我一直在阅读,发现此错误的2个可能原因。 1. Is that I don't have code in a method/function 2. Is I am missing a } 1.是我在方法/函数中没有代码吗?2.我是否缺少}
So it just highlights the: 因此,它只是强调了:
class ViewController: UIViewController, UIPickerViewDelegate
It also puts a little red arrow under the V in ViewController. 它还在ViewController中的V下方放置了一个红色小箭头。 Then the error states: 然后错误指出:
In Declaration of 'View Controller' 在“视图控制器”的声明中
I'm not sure what else could be a possibility. 我不确定还有什么可能。 The only code that is not part of a function are the array declarations. 不属于函数的唯一代码是数组声明。 I put those right after the @IBOutlets and right before override func. 我将它们放在@IBOutlets之后,并在重写func之前。 Everything else is in the override func or a func. 其他所有内容都在替代功能或功能中。
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate
{
// connects the text fields
@IBOutlet var raceViewer: UITextField!
@IBOutlet var strStat: UITextField!
@IBOutlet var dexStat: UITextField!
@IBOutlet var conStat: UITextField!
@IBOutlet var intStat: UITextField!
@IBOutlet var wisStat: UITextField!
@IBOutlet var chrStat: UITextField!
// connects stats for human, half-elf, half-orc
@IBOutlet var singleStat: UITextField!
// connects the picker views
@IBOutlet var racePicker: UIPickerView!
@IBOutlet var statPicker: UIPickerView!
@IBOutlet var singleStatPicker: UIPickerView!
// connects the labels for the race modifications
@IBOutlet var raceStr: UILabel!
@IBOutlet var raceDex: UILabel!
@IBOutlet var raceCon: UILabel!
@IBOutlet var raceInt: UILabel!
@IBOutlet var raceWis: UILabel!
@IBOutlet var raceChr: UILabel!
// connects the labels for final modification
// connects the labels for mod
// defines the arrays
var races = ["","Dwarf","Elf","Gnome","Half-Elf","Half-Orc","Halfling","Human","Ifrit","Oread","Sylph","Tengu","Undine","Kitsune","Nagaji","Wayang"]
var abilStats = ["","7","8","9","10","11","12","13","14","15","16","17","18"]
var single = ["Strength","Dexterity","Constitution","Intelligence","Wisdom","Charisma"]
override func viewDidLoad()
{
super.viewDidLoad()
racePicker = UIPickerView()
statPicker = UIPickerView()
singleStatPicker = UIPickerView()
racePicker.delegate = self
statPicker.delegate = self
singleStatPicker.delegate = self
self.raceViewer.inputView = self.racePicker
self.singleStat.inputView = self.singleStatPicker
self.strStat.inputView = self.statPicker
self.dexStat.inputView = self.statPicker
self.conStat.inputView = self.statPicker
self.intStat.inputView = self.statPicker
self.wisStat.inputView = self.statPicker
self.chrStat.inputView = self.statPicker
// set the tags for the pickerview
racePicker.tag = 0
statPicker.tag = 1
singleStatPicker.tag = 2
// Do any additional setup after loading the view, typically from a nib.
//let racePickerView = UIPickerView()
//racePickerView.delegate = self
//raceViewer.inputView = racePicker
singleStat.isHidden = true
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(_ pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if pickerView.tag == 0
{
return races.count
}
else if pickerView.tag == 1
{
return abilStats.count
}
else if pickerView.tag == 2
{
return single.count
}
return 1
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
if pickerView.tag == 0
{
return races[row]
}
else if pickerView.tag == 1
{
return abilStats[row]
}
else if pickerView.tag == 2
{
return single[row]
}
return ""
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
if pickerView.tag == 0
{
raceViewer.text = races[row]
// Dwarf
if raceViewer.text == races[1]
{
// values changed
raceCon.text = "2"
raceWis.text = "2"
raceChr.text = "-2"
// values reset
raceStr.text = "0"
raceDex.text = "0"
raceInt.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Elf
else if raceViewer.text == races[2]
{
// values changed
raceDex.text = "2"
raceCon.text = "-2"
raceInt.text = "2"
// values reset
raceStr.text = "0"
raceWis.text = "0"
raceChr.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Gnome
else if raceViewer.text == races[3]
{
// values changed
raceStr.text = "-2"
raceCon.text = "2"
raceChr.text = "2"
// values reset
raceDex.text = "0"
raceInt.text = "0"
raceWis.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Half-Elf
else if raceViewer.text == races[4]
{
// values reset
raceStr.text = "0"
raceDex.text = "0"
raceCon.text = "0"
raceInt.text = "0"
raceWis.text = "0"
raceChr.text = "0"
// shows the singleStat text field
singleStat.isHidden = false
}
// Half-Orc
else if raceViewer.text == races[5]
{
// values reset
raceStr.text = "0"
raceDex.text = "0"
raceCon.text = "0"
raceInt.text = "0"
raceWis.text = "0"
raceChr.text = "0"
// shows the singleStat text field
singleStat.isHidden = false
}
// Halfling
else if raceViewer.text == races[6]
{
// values changed
raceStr.text = "-2"
raceDex.text = "2"
raceChr.text = "2"
// values reset
raceCon.text = "0"
raceInt.text = "0"
raceWis.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Human
else if raceViewer.text == races[7]
{
// values reset
raceStr.text = "0"
raceDex.text = "0"
raceCon.text = "0"
raceInt.text = "0"
raceWis.text = "0"
raceChr.text = "0"
// shows the singleStat text field
singleStat.isHidden = false
}
// Ifrit
else if raceViewer.text == races[8]
{
// values changed
raceDex.text = "2"
raceWis.text = "-2"
raceChr.text = "2"
// values reset
raceStr.text = "0"
raceCon.text = "0"
raceInt.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Oread
else if raceViewer.text == races[9]
{
// values changed
raceStr.text = "2"
raceWis.text = "2"
raceChr.text = "-2"
// values reset
raceDex.text = "0"
raceCon.text = "0"
raceInt.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Sylph
else if raceViewer.text == races[10]
{
// values changed
raceDex.text = "2"
raceCon.text = "-2"
raceInt.text = "2"
// values reset
raceStr.text = "0"
raceWis.text = "0"
raceChr.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Tengu
else if raceViewer.text == races[11]
{
// values changed
raceStr.text = "-2"
raceDex.text = "2"
raceWis.text = "2"
// values reset
raceCon.text = "0"
raceInt.text = "0"
raceChr.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Undine
else if raceViewer.text == races[12]
{
// values changed
raceStr.text = "-2"
raceDex.text = "2"
raceWis.text = "2"
// values reset
raceCon.text = "0"
raceInt.text = "0"
raceChr.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Kitsune
else if raceViewer.text == races[13]
{
// values changed
raceStr.text = "-2"
raceDex.text = "2"
raceChr.text = "2"
// values reset
raceCon.text = "0"
raceInt.text = "0"
raceWis.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Nagagi
else if raceViewer.text == races[14]
{
// values changed
raceStr.text = "2"
raceInt.text = "-2"
raceChr.text = "2"
// values reset
raceDex.text = "0"
raceCon.text = "0"
raceWis.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
// Wayang
else if raceViewer.text == races[15]
{
// values changed
raceDex.text = "2"
raceInt.text = "2"
raceWis.text = "-2"
// values reset
raceStr.text = "0"
raceCon.text = "0"
raceChr.text = "0"
// hides the singleStat text field
singleStat.isHidden = true
}
}
}
}
I tested your code, and on its own, it is fine. 我对您的代码进行了测试,并且可以单独使用。
However, if you make two files that both use the ViewController class name, you get the error message you are providing. 但是,如果制作两个都使用ViewController类名的文件,则会收到您提供的错误消息。
In iOS, you are not allowed to create two or more objects with the same name (classes, structs and enums) to avoid naming collisions. 在iOS中,不允许创建两个或多个具有相同名称(类,结构和枚举)的对象,以避免命名冲突。
Please rename the class you are seeing the problem with and see if the issue is resolved. 请重命名遇到问题的类,然后查看问题是否解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.