2017-01-31 12 views
0

私はプログラムで一連のボタンをプログラムで生成しています。その後、私はボタンの数をメモリに保存し、アプリケーションを再起動すると、以前と同じようにボタンが再生成されますが、ボタンは押されません。 "deletebtn"メソッドは、ボタンが押されたときに "pressed"を表示しますが、押されていません。 私はプログラムで生成されたボタン "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

コードを表示してください – Pierce

+0

ボタンを保存しないでください。そのプロパティのみを保存し、必要に応じて再作成してください –

+0

少なくとも、アプリを再起動するときに実行されているコードはありません。**どのように手助けするかは**不可能**です。 http://stackoverflow.com/help/mcve – dfd

答えて

0

私はそれを解決することができました。実際にはかなり厄介です。アプリを再起動すると、ログは表示されなくなります。

+1

うれしいことに、あなた自身で解決することができます。よくやった! –

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でなければなりません。また、indexButtonは、インデックスの用途を教えてくれます

+0

行 "btn.addTarget(自己、アクション:#セレクタ(self.deletebtn)、for:.touchUpInside)"私にエラーを与える。 「forControlEvents:.touchUpInside」と置き換える必要があると言われています –

関連する問題