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