Как развернуть ячейку табличного представления, нажав на кнопку, расположенную вне ячейки в табличном представлении? - PullRequest
0 голосов
/ 20 февраля 2019

Существует ячейка табличного представления, и есть еще кнопка, которая расположена на табличном представлении, а не в ячейке, поэтому я хочу, чтобы при запуске проекта он отображал только пять пользовательских данных в ячейке табличного представления, а другие пользовательские данные показывались, когдапользователь нажимает на кнопку «больше» (расположенную вне ячейки), как мне этого добиться?

Спасибо за помощь

Вы можете найти изображение ячейки прототипа

here

// Mark: TableViewDelegate

extension MembersViewController:UITableViewDelegate,UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return imgarray.count
    }
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tblView.dequeueReusableCell(withIdentifier: "membTableCell", for: indexPath) as! membTableCell
        cell.profiletabImg.image = imgarray[indexPath.row]
        cell.namelbl.text        =  names[indexPath.row]
        cell.positionlbl.text    =    "Ceo of code with color"
        return cell
    }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 40
    }
    @IBAction func morebutton(sender:UIButton){

    }


    }

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Возвращает 5 в методе numberOfRowsInSection, если не нажата дополнительная кнопка.При нажатии кнопки «Еще» перезагрузите таблицу и верните imgarray.count в методе numberOfRowsInSection.

class TableViewController: UITableViewController {

    var dataArr = [String]()
    var expanded = false

    override func viewDidLoad() {
        super.viewDidLoad()
        dataArr = (1..<25).map({ String($0) })
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "\(dataArr.count - 5) more", style: .plain, target: self, action: #selector(morebutton(_:)))
    }
    @objc func morebutton(_ sender: UIBarButtonItem) {
        self.navigationItem.rightBarButtonItem = nil
        expanded = true
        tableView.reloadData()
    }
    // MARK: - Table view data source
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if !expanded && !dataArr.isEmpty {
            return 5
        } else {
            return dataArr.count
        }
    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier") ?? UITableViewCell(style: .default, reuseIdentifier: "reuseIdentifier")
        cell.textLabel?.text = dataArr[indexPath.row]
        return cell
    }
}
0 голосов
/ 20 февраля 2019

Представление таблицы расширяется автоматически, если вы добавляете данные в массив и вызываете функцию tableview.reloadData ().

Из документа Apple - «Вызовите этот метод, чтобы перезагрузить все данные, которые используются для построениятаблицы, включая ячейки, верхние и нижние колонтитулы разделов, массивы индексов и т. д. Для эффективности табличное представление повторно отображает только те строки, которые являются видимыми. Оно корректирует смещения, если таблица сжимается в результате перезагрузки. Делегат табличного представления илиисточник данных вызывает этот метод, когда он хочет, чтобы табличное представление полностью перезагрузило свои данные. Его не следует вызывать в методах, которые вставляют или удаляют строки, особенно в анимационном блоке, реализованном с вызовами beginUpdates () и endUpdates (). "

    @IBAction func moreBtnPressed(_ sender: Any) {
        tableviewArray.append("Append your array with remaining items")
        tableview.reloadData()
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...