在tableview单元格文本中单击表外视图更改外的UIButton

时间:2017-07-14 09:27:13

标签: swift button tableview

我是IOS的新手,我想在swift中的tableView外创建一个表视图和一个UIButton

我想点击UIButton,然后更改UITableViewCell的文字。

1 个答案:

答案 0 :(得分:0)

我会创建新的UIViewController。在此视图中,控制器创建UITableView属性和UIButton属性,在视图控制器的init中,我将创建新的UITableView并为此属性分配,UIButton也是如此。

实施tableViewDelegatetableViewDatasource方法。

viewDidLoad()中,您需要进行一些布局。例如,上半部分的拟合表视图和表视图下的按钮。

在按钮操作中,您可以更改呈现tableView的dataModel。 (方法cellForRowAtIndexPath

毕竟,您需要调用tableView.reloadData()并触发方法cellForRowAtIndexPath并根据更新的数据模型重新呈现表。

最小代码示例 在此代码示例中,UIButton不在tableView下并位于navigationBar中。整个控制器也是UITableViewController的子类,而不是将tableView添加到UIViewController。我只想尽可能简化。

//
//  MasterViewController.swift
//  stackOverflow
//
//  Created by Jakub Prusa on 14.07.17.
//  Copyright © 2017 Jakub Prusa. All rights reserved.
//

import UIKit


class MasterViewController: UITableViewController {

    var dataModel = ["AAA","BBB","CCC","DDD",]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(modifyDataModel(_:)))
        navigationItem.rightBarButtonItem = addButton

    }

    // MARK: - Button action
    func modifyDataModel(_ sender: Any) {
        dataModel[2] = "xx_CCC_xx"
        tableView.reloadData()
    }

    // MARK: - Table View

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataModel.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        cell.textLabel!.text = dataModel[indexPath.row] 
        return cell
    }
}