我是IOS的新手,我想在swift中的tableView外创建一个表视图和一个UIButton
。
我想点击UIButton
,然后更改UITableViewCell
的文字。
答案 0 :(得分:0)
我会创建新的UIViewController
。在此视图中,控制器创建UITableView
属性和UIButton
属性,在视图控制器的init中,我将创建新的UITableView
并为此属性分配,UIButton
也是如此。
实施tableViewDelegate
和tableViewDatasource
方法。
在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
}
}