2016-08-18 2 views
0

私は以下のようにデリゲートを通して他のビューコントローラに「itemInformation」を渡すためにプロトコルを作成しました:私のプロトコルとデリゲートは機能しませんか?

protocol ItemDataDelegate { 

func ItemInformation(itemID:String,itemname:String,itemPrice:String) 
} 


class ItemTableViewCell: UITableViewCell { 

var passItemID:String? 
var PassItemName : String? 
var PassAddon : String? 
var PassItemPrice : String? 

var Itemdelegate: ItemDataDelegate? 


@IBOutlet var itemName: UILabel! 
@IBOutlet var itemPrice: UILabel! 



override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 

} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 

} 


@IBAction func OrderBtnPressed(sender: AnyObject) { 


    print(PassItemName) 
    print(PassAddon) 
    print(passItemID) 
    print(PassItemPrice) 



     let itemnameInfo:String = PassItemName! 
     let itempriceInfo:String = PassItemPrice! 
     let itemID:String = passItemID! 

     Itemdelegate?.ItemInformation(itemID,itemname:itemnameInfo as String, itemPrice: itempriceInfo as String) 




} 

} 

を今ここで私は以下のことを実現することによって、プロトコルを取得しています。 exapmleのために私は単にここでパス値を印刷しようとしていますが、何も起こりません。

class CustomAddOnVC: UIViewController,UITableViewDataSource,UITableViewDelegate, ItemDataDelegate{ 

var ItemTableViewCellObj:ItemTableViewCell? 

override func viewDidLoad() { 
    super.viewDidLoad() 

ItemTableViewCellObj?.Itemdelegate = self 

} 

    func ItemInformation(itemID: String, itemname: String, itemPrice: String) { 
    print(itemID) 
    print(itemname) 
    print(itemPrice) 
} 

}
は、私がここでやっている間違いはありますか?

+0

でItemTableViewCell OrderBtnPressed方法で

Itemdelegate?.ItemInformation(itemID,itemname:itemnameInfo as String, itemPrice: itempriceInfo as String) 

をこの行を置き換える弱参照

weak var Itemdelegate: ItemDataDelegate? 

でItemdelegate'をデリゲートを定義します。例:cellInstance。 Itemdelegate = self – pkc456

+0

CustomAddOnVCで、 – Sofeda

+0

という名前の命名規則を書いてください... – holex

答えて

0

CustomAddOnVCで

ItemTableViewCellObj.Itemdelegate = self 

ItemTableViewCellのviewDidLoadまたは記入してください。 in initialised。そしてまた、自己に `設定し、あなたのCustomAddOnVCでこの

self.itemDelegate?.itemInformation("itemID", itemname: "itemname", itemPrice: "itemPrice") 
+0

弱い参照を作成するとエラーが発生しました... –

+0

ここにItemTableViewCellObjとは何ですか? –

+0

弱参照なしで動作しますか? – Sofeda

関連する問題