简体   繁体   English

Swift-在“视图控制器”的声明中的预期声明

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM