如何从按钮标题获取整数

时间:2016-10-06 10:28:30

标签: ios swift swift3

我有一个标有“3x3”的按钮,现在我想在按钮点击功能中创建一个值为“3”的Int变量。

我试过了

UITableViews

我得到的字符串就像这样

let newBoardSizeString = String.localizedStringWithFormat("\(sender.currentTitle?.characters.first)")
let newBoardSize = Int(newBoardSizeString)

和我得到的是

"Optional(\"3\")"

我只想要3

5 个答案:

答案 0 :(得分:4)

这是XY problem

你问:“如何将我的按钮标签的第一个字符转换为Int。”

真正的答案是“不要那样做”。让代码的逻辑依赖于显示信息是一个非常糟糕的主意。

一个简单的解决方案是使用按钮的tag属性,并在创建按钮时将标记值设置为3:

let newBoardSize = sender.tag

请注意,您需要将发件人的IBAction设置为类型UIButton(更好的解决方案)或将发件人转换为IBAction中的正确类。

另一种方法是设置不同按钮的出口(例如threeButtonfourButton),然后在IBAction中,检查哪个按钮是发件人,并使用switch语句找出合适的每个按钮的值:

func buttonTapped(sender: UIButton) {
  switch sender {
     case threeButton:
       //Use the value 3
     case fourButton
       //Use the value 4
   }
}

答案 1 :(得分:0)

你试过吗?

 Int(newBoardSizeString)!

并确保在解开值之前处理nil

答案 2 :(得分:0)

这很有效。

let newBoardSize = newBoardSizeString as! Int

答案 3 :(得分:0)

let newBoardSizeString = String.localizedStringWithFormat("\(sender.currentTitle?.characters.first)")
if let unwrapped = Int(newBoardSizeString){
    let newBoardSize = unwrapped
}

答案 4 :(得分:0)

 let newBoardSizeString = String.localizedStringWithFormat("\(sender.currentTitle?.characters.first!)")