2017-01-26 65 views
0

通過button.addTraget函數來發送一個特定的數據類型,我有所謂的自定義文件菜單無法使用雨燕

import Foundation 

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

我使用iCarousel來填充我的看法,並針對每個小區的我手動添加的意見與下面的代碼

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 
} 

我已經作出了類addItemToCart這需要在型菜單,這是無論何時被點擊Add按鈕被調用的輸入

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

但我無法將菜單類型對象傳遞給它。 如何在按下按鈕時將對象傳遞給addItemToCart函數?

回答

1

您必須在功能設置發件人:

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

然後設置按鈕標籤指數viewForItemAt這樣你就可以在功能

addButton.tag = index 

現在你可以使用你的FUNC訪問:

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

來源:iOS Swift Button action in table view cell

+0

謝謝。這工作完美。雖然我很好奇,有沒有辦法發送數據類型(我的例子中是Menu)而不是索引值? –