Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
Iphone 通过编程生成的按钮可以';当应用程序重新启动时,无法按下_Iphone_Swift_Xcode_Button - Fatal编程技术网

Iphone 通过编程生成的按钮可以';当应用程序重新启动时,无法按下

Iphone 通过编程生成的按钮可以';当应用程序重新启动时,无法按下,iphone,swift,xcode,button,Iphone,Swift,Xcode,Button,我已经在我的应用程序中以编程方式生成了一系列按钮,当它们被按下时,它们可以完美地工作。然后我将按钮的数量存储在内存中,当我重新启动应用程序时,按钮会像以前一样重新生成,但无法按下。 方法“deletebtn”在按下按钮时打印“按下”,但不打印。 我甚至尝试添加到以编程方式生成的按钮“buttonName.userInteractionEnabled=true”的属性中,但没有任何更改 这是按钮的属性,也是我在viewdidload上的代码,它重新创建的按钮数量与我存储在内存中的按钮数量相同: l

我已经在我的应用程序中以编程方式生成了一系列按钮,当它们被按下时,它们可以完美地工作。然后我将按钮的数量存储在内存中,当我重新启动应用程序时,按钮会像以前一样重新生成,但无法按下。 方法“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")
}
滚动视图是我放置按钮的地方。我尝试添加“ScrollPwd.userInteractionEnabled=true”,但我只能滚动按钮,但无法按下它们


你能帮我吗?

我想最大的问题是你如何定义行动。以下是最新版本(Swift 3)


我情不自禁地更改(修复)了一些变量名。您应该尽量避免将变量名大写,因为这是为类名保留的-因此
ScreenWidth
实际上应该是
ScreenWidth
,并且当您已经有一个变量
索引时,您不需要一个相同的、随机命名的变量
a
来保存相同的信息。另外,
indexButton
告诉我们索引用于什么

我设法解决了它。事实上,这相当尴尬:只不过当你重新启动应用程序时,日志不再出现。

请显示你的代码不要保存按钮。只保存它的属性,并在需要时重新创建它们,而不需要一些代码——至少,重新启动应用程序时执行的是什么——不可能知道如何提供帮助。好多了。现在,您知道deletebtn()没有被执行吗?如果是,怎么做?你能给我看一下密码吗?另外,您发布的创建这些按钮的代码在哪里?请尝试此self.ScrollPwd.clipsToBounds=YES,然后检查按钮是否可见?行“btn.addTarget(self,action:#selector(self.deletebtn),for:.toucupinside”给出了错误信息。它说我必须用“forControlEvents:.touchUpInside”替换它
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)