重新启动应用时,无法按下以编程方式生成的按钮

时间:2017-01-31 18:16:24

标签: iphone swift xcode button

我已经在我的应用程序中以编程方式生成了一系列按钮,并且在按下它们时它们可以正常工作。然后我在内存中存储了按钮的数量,当我重新启动应用程序时,按钮会像以前一样重新生成,然而却无法按下它们。 方法" deletebtn"打印"按下"当按下按钮时,但它没有按下。 我甚至试图添加到以编程方式生成的按钮的属性" buttonName.userInteractionEnabled = true",但没有任何变化。

这是按钮的属性,这也是我在viewdidload上的代码,它重新创建了与我在内存中存储的数量一样多的按钮:

let btn: UIButton = UIButton(frame: CGRectMake(10, CGFloat(60*a), ScreenWidth - 20 , 50))    
btn.layer.cornerRadius = 0.5 * btn.bounds.size.height
btn.backgroundColor = UIColor.whiteColor()
btn.setTitleColor(UIColor.blackColor(), forState: .Normal)
btn.setTitle(ArrayService[(index)], forState: UIControlState.Normal)
btn.addTarget(self, action: Selector("deletebtn:"), forControlEvents: UIControlEvents.TouchUpInside)
btn.tag = a //an int variable that is increased each time i create a neew button
btn.userInteractionEnabled = true
self.ScrollPwd.addSubview(btn)

这是方法deletebtn:

func deletebtn(sender:UIButton){
        print("pressed")
}

scrollView是我放置按钮的地方。我已经尝试添加" ScrollPwd.userInteractionEnabled = true",但我可以滚动按钮,但我无法按下它们。

你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

我认为最大的问题是你如何定义行动。这是一个更新版本(在Swift 3中)

let btn: UIButton = UIButton(frame: CGRect(x: 10, y: 60 * indexButton, width: screenWidth - 20, height: 50))
btn.layer.cornerRadius = 0.5 * btn.bounds.size.height
btn.backgroundColor = UIColor.white
btn.setTitleColor(UIColor.black, for: .normal)
btn.setTitle(arrayService[indexButton], for: .normal)
btn.addTarget(self, action: #selector(self.deletebtn), for: .touchUpInside)

btn.tag = indexButton
self.scrollPwd.addSubview(btn)

我无法帮助更改(修复)某些变量名称。您应该尽量避免大写变量名称,因为它是为类名保留的 - 所以ScreenWidth应该是screenWidth,当你已经有变量index时,你就不要#39; t需要一个相同的,随机命名的变量a来保存相同的信息。此外,indexButton告诉我们

使用的索引

答案 1 :(得分:0)

我设法解决了这个问题。实际上它很尴尬:只是当你重新启动应用程序时,日志不再出现。