0

NOTE: I am self teaching myself. I have been working with Swift for the last several days. 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. 1. Is that I don't have code in a method/function 2. Is I am missing a }

So it just highlights the:

class ViewController: UIViewController, UIPickerViewDelegate

It also puts a little red arrow under the V in ViewController. 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. 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
            }
        }
    }
}
2
  • 2
    Provide more context. Post more of your Swift file before that line. Commented Dec 1, 2016 at 20:33
  • The only thing before that line is import UIKit Commented Dec 1, 2016 at 20:42

1 Answer 1

1

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.

enter image description here

In iOS, you are not allowed to create two or more objects with the same name (classes, structs and enums) to avoid naming collisions.

Please rename the class you are seeing the problem with and see if the issue is resolved.

Sign up to request clarification or add additional context in comments.

3 Comments

I do have that. I just have the opening { on the next line. I went through and matched up all { } , "", ()
@MIcheal As rmaddy asked then, can you please post the full content of the file? It's difficult to troubleshoot without it.
@MIcheal I updated my answer, see if that resolves it

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.