Ios “今日”小部件中奇怪的UIButton行为
我在我的应用程序中添加了“今日”扩展。我稍微编辑了一下vanilla小部件,使其看起来像这样: 请注意标题为“先走”的UIButton。当它被按下时(确切地说是在内部触摸),它会触发此动作:Ios “今日”小部件中奇怪的UIButton行为,ios,swift,today-extension,Ios,Swift,Today Extension,我在我的应用程序中添加了“今日”扩展。我稍微编辑了一下vanilla小部件,使其看起来像这样: 请注意标题为“先走”的UIButton。当它被按下时(确切地说是在内部触摸),它会触发此动作: @IBAction func coinChanged(sender: UIButton) { if sender.titleLabel?.text == "Went 1st" { coin = true sender.titleLabel!.text = "Went
@IBAction func coinChanged(sender: UIButton) {
if sender.titleLabel?.text == "Went 1st" {
coin = true
sender.titleLabel!.text = "Went 2nd"
} else {
coin = false
sender.titleLabel!.text = "Went 1st"
}
}
它基本上在两个状态之间改变,相应地改变其标题和变量
但问题是——当我按下它时,它确实改变了它的标题,但立即又改变了它,结果是和最初一样的标题。我的第一个想法是,在一次新闻发布会之后,这个动作会被调用两次,但当我查看print时,我发现它只被调用了一次。有时,这些指纹甚至没有出现在控制台上,但这是另一回事
所以,这是一个问题。不过,还有一个问题——当我按下按钮时,整个小部件都放错了位置。要知道我的意思,请看第一张图片(在按下任何按钮之前是小部件),现在看这张图片(在按下按钮之后):
您可以看到,边界现在位于TodayView的最边缘。以下是第一个分段控件的约束条件,以供参考:
编辑:以下是“第一次/第二次”按钮的限制条件:
编辑2:如果你投了反对票,一定要告诉我出了什么问题,这样下次我就可以避免犯同样的错误
问题是您不应该这样设置按钮文本。标题标签主要用于设置文本大小、字体、颜色等。要设置标题,请使用以下内容:
sender.setTitle("Button Title", forState: UIControlState.Normal)
因此,新的ib操作应该如下所示:
@IBAction func coinChanged(sender: UIButton) {
if sender.titleLabel?.text == "Went 1st" {
coin = true
sender.setTitle("Went 2nd", forState: UIControlState.Normal)
} else {
coin = false
sender.setTitle("Went 1st", forState: UIControlState.Normal)
}
}
谢谢,现在可以修改文本了。我想知道为什么会这样——我将试着看一下文档。那么尺寸变化的问题呢?第二张图片。你介意发布结果按钮的约束条件吗?我想这是因为UIButton被重置了,如果主要操作是triggeret。至少是标题。第二个错误很奇怪,你是否设置了其他按钮属性。不,没有。我甚至删除了按钮,从头开始制作,但也没用。还要注意的是,没有其他按钮可以做到这一点,只有“第一个”按钮。