2017-09-19 24 views
0

同じnibファイルを使用して、UITableViewを移入しました。これらのセルには2つの異なる機能が組み込まれています。小さなボタン以外のセル上のどこにいても、関数を実行して別のページにつなぎます。しかし、小さなボタンをクリックした場合は、UITableViewを更新してクリックしたセルの下のセルをドロップダウンの一種として入力します。私は現在のセルのインデックスを取得し、UITableViewCellのクラスからUITableView更新を実行できるようにする必要があり今後UITableViewを更新するセルのクラスから更新する

import UIKit 

class ContactCell: UITableViewCell { 
    //below are the outlets for the conact cells 
    @IBOutlet weak var msgStatus: UIView! 
    @IBOutlet weak var contactName: UILabel! 
    @IBOutlet weak var dropDown: UIButton! 


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

     msgStatus.layer.cornerRadius = msgStatus.frame.size.width/2 

    } 

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

     // Configure the view for the selected state 
    } 
    @IBAction func dropDown(_ sender: Any) { 
     print("selected drop down") 
    } 

} 

:私は正常に別々の機能を実行するには、以下があります。どのように私はこれを行うことができるでしょうか?

+1

uitableviewcell swiftで 'uibutton'を検索してください。たくさんのドキュメント、例、ディスカッションなどが見つかります。 – DonMag

答えて

0

委任でこれを行うことができます。あなたのContactCellためのデリゲートプロトコルを作成します。次に、セルのためのデリゲートパラメータ設定

protocol ContactCellDelegate { 
    func pleaseAddDropdown(to: ContactCell) 
} 

:あなたがある場合ContactCellDelegateプロトコルにあなたのテーブルビューを購読その後

var delegate: ContactCellDelegate? 

を(あなたは、サブクラス化する必要があります標準のUITableViewを使用します)。これは、あなたのテーブルビュークラスに対して、pleaseAddDropdown()の実装を記述する必要があることを意味します。セルをデキューするときは、デリゲートパラメータがテーブルビューに割り当てられていることを確認してください。適切な行動を取ることができ、テーブルビューにそのメッセージを送信します

guard let _ = delegate else { return } 

delegate!.pleaseAddDropdown(to: self) 

は今、ドロップダウンの実装では()あなただけのような何かをする必要があります。

希望に役立ちます。

関連する問題