Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 分段控件在段0上未按预期工作_Ios_Iphone_Swift_Xcode_Uisegmentedcontrol - Fatal编程技术网

Ios 分段控件在段0上未按预期工作

Ios 分段控件在段0上未按预期工作,ios,iphone,swift,xcode,uisegmentedcontrol,Ios,Iphone,Swift,Xcode,Uisegmentedcontrol,我有一个分段控件,可以在我的一个视图控制器上更改5个图像(请参见下图),但我希望在有人进入“铸造”选项卡时立即选择分段0。目前,只有当我进入第1段或第2段然后返回时,它才会被选中,之后它显然会正常工作 在我启用并选择勾选的属性检查器中,我甚至尝试了状态选择勾选,但结果总是一样的,所以我不确定哪里出了问题。我可以通过在ViewDidLoad中为5幅图像添加代码,将其中四幅设置为.ishiden=true,一幅设置为.ishiden=false来获得视觉修复,但这显然不能解决我的问题 这是我的密码:

我有一个分段控件,可以在我的一个视图控制器上更改5个图像(请参见下图),但我希望在有人进入“铸造”选项卡时立即选择分段0。目前,只有当我进入第1段或第2段然后返回时,它才会被选中,之后它显然会正常工作

在我启用并选择勾选的属性检查器中,我甚至尝试了状态选择勾选,但结果总是一样的,所以我不确定哪里出了问题。我可以通过在ViewDidLoad中为5幅图像添加代码,将其中四幅设置为.ishiden=true,一幅设置为.ishiden=false来获得视觉修复,但这显然不能解决我的问题

这是我的密码:

    import UIKit

        class CastingViewController: UIViewController {

            let runesArray = [Rune(runeName: "Fehu", runeImage: UIImage(named: ("Fehu.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Uruz", runeImage: UIImage(named: ("Uruz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Thurisaz", runeImage: UIImage(named: ("Thurisaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ansuz", runeImage: UIImage(named: ("Ansuz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Raidho", runeImage: UIImage(named: ("Raidho.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Kenaz", runeImage: UIImage(named: ("Kenaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Gebo", runeImage: UIImage(named: ("Gebo.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Wunjo", runeImage: UIImage(named: ("Wunjo.png"))!, runeDescription: "Description goes here."),

                              Rune(runeName: "Hagalaz", runeImage: UIImage(named: ("Hagalaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Nauthiz", runeImage: UIImage(named: ("Nauthiz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Isa", runeImage: UIImage(named: ("Isa.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Jera", runeImage: UIImage(named: ("Jera.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Eihwaz", runeImage: UIImage(named: ("Eihwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Perthro", runeImage: UIImage(named: ("Perthro.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Algiz", runeImage: UIImage(named: ("Algiz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Sowilo", runeImage: UIImage(named: ("Sowilo.png"))!, runeDescription: "Description goes here."),

                              Rune(runeName: "Tiwaz", runeImage: UIImage(named: ("Tiwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Berkano", runeImage: UIImage(named: ("Berkano.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ehwaz", runeImage: UIImage(named: ("Ehwaz.png"))!, runeDescription: "(Description goes here."),
                              Rune(runeName: "Mannaz", runeImage: UIImage(named: ("Mannaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Laguz", runeImage: UIImage(named: ("Laguz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ingwaz", runeImage: UIImage(named: ("Ingwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Dagaz", runeImage: UIImage(named: ("Dagaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Othala", runeImage: UIImage(named: ("Othala.png"))!, runeDescription: "Description goes here.")]

            var runesCastArray: [UIImage] = [] // Array to save Rune images for 3 or 5 Rune Cast

    @IBOutlet weak var segmentedControl: UISegmentedControl!
    @IBOutlet weak var runeOne: UIImageView!
    @IBOutlet weak var runeTwo: UIImageView!
    @IBOutlet weak var runeThree: UIImageView!
    @IBOutlet weak var runeFour: UIImageView!
    @IBOutlet weak var runeFive: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

    }

    override func viewWillAppear(_ animated: Bool) {
        segmentedControl.selectedSegmentIndex = 0
    }

    var runeCast = 0 // Need to check if this will work in a Switch statement

    var storedRuneOne: UIImage!
    var storedRuneTwo: UIImage!
    var storedRuneThree: UIImage!
    var storedRuneFour: UIImage!
    var storedRuneFive: UIImage!

    func oneRuneCast() {

        runeCast = 1
        runeOne.isHidden = true
        runeTwo.isHidden = true
        runeThree.isHidden = true
        runeFour.isHidden = true
        runeFive.isHidden = false

    }

    func threeRuneCast() {

        runeCast = 3
        runeOne.isHidden = true
        runeTwo.isHidden = false
        runeThree.isHidden = true
        runeFour.isHidden = false
        runeFive.isHidden = false

    }

    func fiveRuneCast() {

        runeCast = 5
        runeOne.isHidden = false
        runeTwo.isHidden = false
        runeThree.isHidden = false
        runeFour.isHidden = false
        runeFive.isHidden = false

    }

    @IBAction func castType(_ sender: Any) {

       switch segmentedControl.selectedSegmentIndex {
        case 0:
            oneRuneCast()
        case 1:
            threeRuneCast()
        case 2:
            fiveRuneCast()
        default: break
        }

    }

    @IBAction func castButtonPressed(_ sender: Any) {

        if runeCast == 1 {

        let randomRunes = runesArray[Int(arc4random_uniform(UInt32(runesArray.count)))]

            runeFive.image = randomRunes.runeImage


        } else if runeCast == 3 {

            let randomRunes = runesArray[Int(arc4random_uniform(UInt32(runesArray.count)))]

            runeTwo.image = randomRunes.runeImage
            runeFour.image = randomRunes.runeImage
            runeFive.image = randomRunes.runeImage

        } else if runeCast == 5 {

            let randomRunes = runesArray[Int(arc4random_uniform(UInt32(runesArray.count)))]

            runeOne.image = randomRunes.runeImage
            runeTwo.image = randomRunes.runeImage
            runeThree.image = randomRunes.runeImage
            runeFour.image = randomRunes.runeImage
            runeFive.image = randomRunes.runeImage

            }
    }
}

以编程方式在ViewDidDisplay或viewDidLoad中设置段索引(根据应用程序要求)


当视图出现时,您需要重置所选的段索引(例如在
视图中将出现
),但通过编程更改所选段不会调用操作处理程序;你需要明确地称之为

您还可以通过将
UIImageViews
放入数组来简化代码

class CastingViewController: UIViewController {

            let runesArray = [Rune(runeName: "Fehu", runeImage: UIImage(named: ("Fehu.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Uruz", runeImage: UIImage(named: ("Uruz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Thurisaz", runeImage: UIImage(named: ("Thurisaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ansuz", runeImage: UIImage(named: ("Ansuz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Raidho", runeImage: UIImage(named: ("Raidho.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Kenaz", runeImage: UIImage(named: ("Kenaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Gebo", runeImage: UIImage(named: ("Gebo.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Wunjo", runeImage: UIImage(named: ("Wunjo.png"))!, runeDescription: "Description goes here."),

                              Rune(runeName: "Hagalaz", runeImage: UIImage(named: ("Hagalaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Nauthiz", runeImage: UIImage(named: ("Nauthiz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Isa", runeImage: UIImage(named: ("Isa.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Jera", runeImage: UIImage(named: ("Jera.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Eihwaz", runeImage: UIImage(named: ("Eihwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Perthro", runeImage: UIImage(named: ("Perthro.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Algiz", runeImage: UIImage(named: ("Algiz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Sowilo", runeImage: UIImage(named: ("Sowilo.png"))!, runeDescription: "Description goes here."),

                              Rune(runeName: "Tiwaz", runeImage: UIImage(named: ("Tiwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Berkano", runeImage: UIImage(named: ("Berkano.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ehwaz", runeImage: UIImage(named: ("Ehwaz.png"))!, runeDescription: "(Description goes here."),
                              Rune(runeName: "Mannaz", runeImage: UIImage(named: ("Mannaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Laguz", runeImage: UIImage(named: ("Laguz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ingwaz", runeImage: UIImage(named: ("Ingwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Dagaz", runeImage: UIImage(named: ("Dagaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Othala", runeImage: UIImage(named: ("Othala.png"))!, runeDescription: "Description goes here.")]

            var runesCastArray: [UIImage] = [] // Array to save Rune images for 3 or 5 Rune Cast

    @IBOutlet weak var segmentedControl: UISegmentedControl!
    @IBOutlet weak var runeOne: UIImageView!
    @IBOutlet weak var runeTwo: UIImageView!
    @IBOutlet weak var runeThree: UIImageView!
    @IBOutlet weak var runeFour: UIImageView!
    @IBOutlet weak var runeFive: UIImageView!

    var runeImageViews:[UIImageView]!
    var runeCount = 1

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        self.runeImageViews=[runeFive,runeFour,runeThree,runeTwo,runeOne]

    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        segmentedControl.selectedSegmentIndex = 0
        self.runeCount = 1
        self.showHideRuneViews()
    }

    func showHideRuneViews(clearImage: Bool=true) {
        for i in 0..<self.runeImageViews.count {
            let imageView = self.runeImageViews[i]
            if i < self.runeCount {
                imageView.isHidden = false
            } else {
                imageView.isHidden = true
            }
            if clearImage {
                imageView.image = nil
            }
        }
    }

    func runeCast() {
        for i in 0..<self.runeImageViews.count.reversed() {
            let imageView = self.runeImageViews[i]
            if i < self.runeCount {
                 imageView.image = runesArray[Int(arc4random_uniform(UInt32(runesArray.count)))]
            } else {
                  imageView.image = nil
        }
    }

    @IBAction func castType(_ sender: Any) {

       switch segmentedControl.selectedSegmentIndex {
        case 0:
            self.runeCount = 1
        case 1:
            self.runeCount = 3
        case 2:
            self.runeCount = 5
        default: break
        }

        self.showHideRuneViews()

    }

    @IBAction func castButtonPressed(_ sender: Any) {
        self.runeCast()
    }
}
类CastingViewController:UIViewController{
让runesArray=[Rune(runeName:“Fehu”,runeImage:UIImage(命名:((“Fehu.png”)!,runeDescription:“此处有描述”),
符文(符文名称:“Uruz”,符文名称:UIImage(名称:((“Uruz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Thurisaz”,符文名称:UIImage(名称:((“Thurisaz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Ansuz”,符文图像:UIImage(名称:((“Ansuz.png”))!,符文描述:“描述在这里。”),
符文(符文名称:“Raidho”,符文名称:UIImage(命名:((“Raidho.png”))!,符文描述:“描述在这里。”),
符文(符文名称:“Kenaz”,符文名称:UIImage(名称:(“Kenaz.png”)!,符文说明:“此处有描述。”),
符文(符文名称:“Gebo”,符文名称:UIImage(名称:((“Gebo.png”))!,符文描述:“描述在这里。”),
符文(符文名称:“Wunjo”,符文名称:UIImage(名称:(“Wunjo.png”)!,符文说明:“此处有描述。”),
符文(符文名称:“Hagalaz”,符文名称:UIImage(名称:((“Hagalaz.png”))!,符文描述:“描述在这里。”),
符文(符文名称:“Nauthiz”,符文名称:UIImage(名称:((“Nauthiz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Isa”,符文名称:UIImage(名称:((“Isa.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Jera”,符文名称:UIImage(命名:(“Jera.png”))!,符文描述:“此处有描述。”),
符文(符文名称:“Eihwaz”,符文名称:UIImage(名称:(“Eihwaz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Perthro”,符文名称:UIImage(名称:((“Perthro.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Algiz”,符文名称:UIImage(名称:((“Algiz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Sowilo”,符文名称:UIImage(名称:((“Sowilo.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Tiwaz”,符文名称:UIImage(名称:((“Tiwaz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Berkano”,符文名称:UIImage(名称:(“Berkano.png”)!,符文描述:“此处有描述。”),
符文(符文名称:“Ehwaz”,符文名称:UIImage(名称:((“Ehwaz.png”))!,符文描述:“(描述见此处”),
符文(符文名称:“Mannaz”,符文名称:UIImage(名称:((“Mannaz.png”))!,符文描述:“此处有描述。”),
符文(符文名称:“Laguz”,符文名称:UIImage(名称:((“Laguz.png”))!,符文描述:“此处有描述。”),
符文(符文名称:“Ingwaz”,符文名称:UIImage(名称:((“Ingwaz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Dagaz”,符文名称:UIImage(名称:((“Dagaz.png”))!,符文说明:“此处有描述。”),
符文(符文名称:“Othala”,符文名称:UIImage(命名:((“Othala.png”))!,符文描述:“描述在这里。”)]
var runesCastArray:[UIImage]=[]//为3或5次符文转换保存符文图像的数组
@IBOutlet弱var分段控制:UISegmentedControl!
@iBlowVar runeOne:UIImageView!
@IBMOutlet弱var runeTwo:UIImageView!
@IBMOutlet弱var RunetThree:UIImageView!
@IBVAR运行库:UIImageView!
@IBMOutlet弱var runeFive:UIImageView!
var runeImageViews:[UIImageView]!
var runeCount=1
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置。
self.runeImageViews=[runeFive、runeFour、runetree、runeTwo、runeOne]
}
覆盖函数视图将出现(uo动画:Bool){
超级。视图将显示(动画)
segmentedControl.selectedSegmentIndex=0
self.runecoount=1
self.showHideRuneViews()
}
func showHideRuneViews(clearImage:Bool=true){

对于0中的我。当我阅读你的答案时,我认为是的!这是有道理的,但我尝试了这两种方法,但没有运气,对我来说仍然是相同的结果。我上面的代码没有分段控件的出口设置,但一旦添加并更改代码来表示这一点,我仍然得到了相同的结果
castType
中的代码应该是相同的在另一个显示/隐藏的函数中
class CastingViewController: UIViewController {

            let runesArray = [Rune(runeName: "Fehu", runeImage: UIImage(named: ("Fehu.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Uruz", runeImage: UIImage(named: ("Uruz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Thurisaz", runeImage: UIImage(named: ("Thurisaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ansuz", runeImage: UIImage(named: ("Ansuz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Raidho", runeImage: UIImage(named: ("Raidho.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Kenaz", runeImage: UIImage(named: ("Kenaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Gebo", runeImage: UIImage(named: ("Gebo.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Wunjo", runeImage: UIImage(named: ("Wunjo.png"))!, runeDescription: "Description goes here."),

                              Rune(runeName: "Hagalaz", runeImage: UIImage(named: ("Hagalaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Nauthiz", runeImage: UIImage(named: ("Nauthiz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Isa", runeImage: UIImage(named: ("Isa.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Jera", runeImage: UIImage(named: ("Jera.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Eihwaz", runeImage: UIImage(named: ("Eihwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Perthro", runeImage: UIImage(named: ("Perthro.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Algiz", runeImage: UIImage(named: ("Algiz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Sowilo", runeImage: UIImage(named: ("Sowilo.png"))!, runeDescription: "Description goes here."),

                              Rune(runeName: "Tiwaz", runeImage: UIImage(named: ("Tiwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Berkano", runeImage: UIImage(named: ("Berkano.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ehwaz", runeImage: UIImage(named: ("Ehwaz.png"))!, runeDescription: "(Description goes here."),
                              Rune(runeName: "Mannaz", runeImage: UIImage(named: ("Mannaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Laguz", runeImage: UIImage(named: ("Laguz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Ingwaz", runeImage: UIImage(named: ("Ingwaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Dagaz", runeImage: UIImage(named: ("Dagaz.png"))!, runeDescription: "Description goes here."),
                              Rune(runeName: "Othala", runeImage: UIImage(named: ("Othala.png"))!, runeDescription: "Description goes here.")]

            var runesCastArray: [UIImage] = [] // Array to save Rune images for 3 or 5 Rune Cast

    @IBOutlet weak var segmentedControl: UISegmentedControl!
    @IBOutlet weak var runeOne: UIImageView!
    @IBOutlet weak var runeTwo: UIImageView!
    @IBOutlet weak var runeThree: UIImageView!
    @IBOutlet weak var runeFour: UIImageView!
    @IBOutlet weak var runeFive: UIImageView!

    var runeImageViews:[UIImageView]!
    var runeCount = 1

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        self.runeImageViews=[runeFive,runeFour,runeThree,runeTwo,runeOne]

    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        segmentedControl.selectedSegmentIndex = 0
        self.runeCount = 1
        self.showHideRuneViews()
    }

    func showHideRuneViews(clearImage: Bool=true) {
        for i in 0..<self.runeImageViews.count {
            let imageView = self.runeImageViews[i]
            if i < self.runeCount {
                imageView.isHidden = false
            } else {
                imageView.isHidden = true
            }
            if clearImage {
                imageView.image = nil
            }
        }
    }

    func runeCast() {
        for i in 0..<self.runeImageViews.count.reversed() {
            let imageView = self.runeImageViews[i]
            if i < self.runeCount {
                 imageView.image = runesArray[Int(arc4random_uniform(UInt32(runesArray.count)))]
            } else {
                  imageView.image = nil
        }
    }

    @IBAction func castType(_ sender: Any) {

       switch segmentedControl.selectedSegmentIndex {
        case 0:
            self.runeCount = 1
        case 1:
            self.runeCount = 3
        case 2:
            self.runeCount = 5
        default: break
        }

        self.showHideRuneViews()

    }

    @IBAction func castButtonPressed(_ sender: Any) {
        self.runeCast()
    }
}