Протокол не читается в проекте swift xcode - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть UITableview, который имеет уникальные ячейки, каждая ячейка имеет свой собственный класс, и у них есть действия, которые я хочу подключить к своему основному UITableviewcontroller

Я присоединяю протокол и открываю его вtableviewcontroller, но он не читается

как я могу его инициализировать или что я делаю не так?

вот мой класс ячеек:

import UIKit

class AddFaxHeadlineTableViewCell: UITableViewCell {

    var delegate: AddFaxHeadlineProtocol?

    @IBOutlet weak var addButton: UIButton!

    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 onAddFaxNumberPressed(_ sender: Any) {
        delegate?.faxButtonPressed()

    }

}


protocol AddFaxHeadlineProtocol{
    func faxButtonPressed()
}

и в моем контроллере таблиц я расширяю протокол:

class SummaryMainTableViewController: UITableViewController, AddFaxHeadlineProtocol, AddEmailHeadlineProtocol {

, но сама функция никогда не читается:

func faxButtonPressed() {

        var indexToInsert = 0

        for forIndex in 0..<sectionsData.count {
            // render the tick mark each minute (60 times)
            if (sectionsData[forIndex] == "addFaxHeadline") {
                indexToInsert = forIndex + 1
            }

        }


        sectionsData.insert("addNewFax", at: indexToInsert)
        mainTableView.reloadData()
    }

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Еще один способ пройти внутрь ВК без протоколов

let cell = ///

cell.addButton.tag = indexPath.row

cell.addButton.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)

}

@objc func buttonTapped(_ sender:UIButton) {

    print(sender.tag)

}
0 голосов
/ 29 ноября 2018

Убедитесь, что вы делаете это:

cell.delegate = self (It's required)

Затем улучшите вашу строку кода, как показано ниже.Поскольку вы не будете устанавливать делегат, то при непосредственном вызове этого метода делегата произойдет сбой.

@IBAction func onAddFaxNumberPressed(_ sender: Any) {
    if let delegateObject = delegate {
        delegateObject.faxButtonPressed()
    }
}

Во-вторых, в этой строке DelegateObject.faxButtonPressed () вам нужно будет отправить некоторый параметр, чтобы определить, будет ли ячейка нажата.Таким образом, вы можете передать здесь кнопку тега или вы можете также передать ячейку.

0 голосов
/ 29 ноября 2018

Вам нужно позвонить:

cell.delegate = self

В вашем cellForRowAtIndex методе

Это распространенная ошибка, допущенная в протоколах, и делегаты забывают вызвать делегат .

Вот несколько примеров, которые вы можете проверить, если все пропущено при вызове делегата: -

Быстрый делегат между двумя виртуальными машинами без перехода

Кажется, что делегат не работает, в соответствии с консолью

Как представить другой контроллер представления после увольнения из контроллера навигации в swift?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...