2016-08-08 5 views
0

私のオブジェクトからボタンにInt64/32値を渡して、それ以上の操作を実行したいと思います。しかしbtn.tagIntの値をとるので、エラーが発生し、obj.idIntに変更すると、数値の最初の数を取得するだけです。私はcellBtn to btnUからobj.idを渡すことができますどのようにUIButton SwiftでInt64/Int32値を渡す方法

cellBtn = UIButton(frame: CGRect(x: 150, y: 30, width: 100, height: 100)) 
     cellBtn.backgroundColor = .greenColor() 
     cellBtn.setTitle("Test", forState: .Normal) 

    //obj.id is Int64 value 
     cellBtn.tag = obj.id 

     cellBtn.addTarget(self, action: #selector(btnU), forControlEvents: .TouchUpInside) 
     cell?.addSubview(cellBtn) 

     return cell! 

    func btnU(sender: UIButton!) { 
     print("hey") 
     print(sender.tag) 

    } 

のでbtnUは、私がUI要素に値を渡すことはお勧めしません、あなたはその目的のためにモデルオブジェクトを持っている必要がありobj.id

+0

としてそれを与える新しいプロパティは 'var id:Int64'と言う。 – NSGangster

+0

これらのタグを使用しているかどうか尋ねてもよろしいですか? – Alexander

+0

私はあなたが欠けていると思います(:) try #selector(ClassName。btnU(_ :) –

答えて

1
  1. からの情報を持っています。

  2. 私はあまりにも一般的なので、 "タグ"プロパティの使用をお勧めしません。魔法使いのフレームワークがあなたと同じタグ値を使用して変更することは決して決してありません。

    class ByButton: UIButton { 
        var myValue: Int64 = 0 
    } 
    

    それとも、これはあまり以来、最初の溶液から推奨されます(すべてのUIButtonsに、実行時のプロパティを追加することができます:あなたは、サブクラスを使用しなければならない場合

しかし、そのようにあなたはInt64型を使用することができます)を見つけるのは難しいし、アプリケーション内のすべてのUIButtonsに追加されますI'ts

private var buttonValue: Int64 = 0 
extension UIButton { 
    var keyBoardHeight: CGFloat { 
     get { 
      return objc_getAssociatedObject(self, &buttonValue) as! CGFloat 
     } 
     set { objc_setAssociatedObject(self, &buttonValue, newValue, objc_AssociationPolicy(rawValue: 0)!) } 
    } 
} 
2

ビューコントロールは、実際にデータを保持することを意味していません。

ボタンタグをデータの配列のインデックスとして使用できます。 (配列インデックスに一定の値を加えて、ある範囲の非ゼロタグだけがあなたの配列内のエントリーを参照するようにします(ボタンのタグは100から始まります。タグ番号から100を引いてTHATを

UIButtonをサブクラス化し、Int64プロパティをサブクラスに追加することができます。これは、私はおそらく `UIButton`をサブクラス化する方が良いと思い@NSGangsterによって提案された。

あなたはボタンインスタンスに新しいオブジェクトを添付する連想記憶装置を使用することができますが、それは少し「ハックっぽい」です。