2017-01-26 6 views
0

を使用してbutton.addTraget関数を介して特定のデータ型を送信できませんI持つカスタムファイルと呼ばれるメニュー私は私の見解を埋めるためにiCarouselを使用していますし、各セルのために、私はのように手動でビューを追加していスウィフト

import Foundation 

class Menu:NSObject{ 
    var itemName : String? 
    var itemURL : String? 
    var objectId: String? 
    var created: NSDate? 
    var updated: NSDate? 
} 

以下のコード

func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView { 
    var myView : UIView 
    let menu = menuItems[index] 

    myView = UIView(frame: CGRect(x: 0, y: 0, width: 220, height: 500)) 
    myView.backgroundColor = UIColor.white.withAlphaComponent(0.7) 


    addButton = UIButton(frame: CGRect(x: 150, y: 260, width: 60, height: 20)) 
    addButton.backgroundColor = UIColor.brown 
    addButton.layer.cornerRadius = 0.5 * addButton.bounds.width 
    addButton.setTitle("Add", for: .normal) 
    addButton.titleLabel?.font = UIFont.systemFont(ofSize: 13) 
    addButton.addTarget(self, action:#selector(addItemToCart(menu:)), for: .touchDown) 

    myView.addSubview(addButton) 

    return myView 
} 

IはaddButtonがクリックされるたびに呼び出されるタイプメニューの入力を取り込み、クラスaddItemToCartを行った

func addItemToCart(menu : Menu) -> Void { 
    print(menu.itemName) 
} 

しかし、メニュータイプのオブジェクトを渡すことができません。 ボタンを押すたびにオブジェクトをaddItemToCart関数に渡すにはどうすればよいですか?

答えて

1

あなたの関数内で、送信者を設定する必要があります。

func addItemToCart(sender : UIButton) -> Void { 
    print(menu.itemName) 
} 

あなたがあなたのFUNCを使用することができます今すぐ

addButton.tag = index 

機能にアクセスできるように、そして、viewForItemAtにインデックスにボタンタグを設定します。

func addItemToCart(sender : UIButton) -> Void { 
     let menu = menuItems[sender.tag] 
     print(menu.itemName) 
} 

出典:iOS Swift Button action in table view cell

+0

ありがとうございました。それは完璧に働いた。私は興味がありますが、インデックス値の代わりにデータ型(私の場合はMenu)を送る方法はありますか? –