我正在尝试使用带有UIViewController内部单元格的表格视图,我希望每一行都有一个按钮。
我使用UIViewController而不是UITableView的原因是因为我希望在该视图中有其他内容而不是表视图所占用的整个屏幕。
我遇到的问题是我只在最后一个单元格中看到一个按钮。我如何解决这个问题,以便每一行都有按钮? 我希望可以使用这样的东西
import UIKit
类ViewController:UIViewController,UITableViewDataSource,UITableViewDelegate {
@IBOutlet weak var logButton: UIButton!
@IBOutlet weak var mytableView: UITableView!
let carLocations = ["Row One", "Row Two", "Row Three"]
override func viewDidLoad() {
super.viewDidLoad()
mytableView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return carLocations.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let myCell: UITableViewCell = mytableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
myCell.textLabel?.text = carLocations[indexPath.row]
myCell.detailTextLabel?.text = " Detailed text"
logButton.tag = indexPath.row
// I was hoping that I could use something like this
// myCell.logButton.tag = indexPath.row
return myCell
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
// handle delete (by removing the data from your array and updating the tableview)
}
}
答案 0 :(得分:1)
在您的tableview上删除UITableViewCell。这将为您提供自定义单元格外观的选项。创建一个继承自UITableViewCell的新类,并将其作为类添加到tableview单元格中。从单元格到此新文件创建出口,然后使用cellForRowAtIndexPath设置单元格内控件的属性。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! CBTableViewCell
// add self as delegate for tablecell so delegate can call the function defined within
cell.delegate = self
cell.title.text = self.items[indexPath.row]
return cell
}
答案 1 :(得分:1)
我会使用Custom Cells来解决这个问题......
{{1}}
你的手机:
{{1}}
答案 2 :(得分:1)
您可以这样使用自定义单元格。
创建一个子类为UITableViewCell
的新swift文件。
通过选择您的单元格将该类分配给您的单元格,然后转到Identity Inspector
,它看起来像:
然后将元素添加到您需要的单元格中,例如我根据您的需要在单元格中添加了两个标签和一个按钮,单元格将如下所示:
之后,将该元素的插座连接到您的自定义调用,您的Custom tableview单元格类将是:
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet weak var titleLbl: UILabel!
@IBOutlet weak var DetailLabel: UILabel!
@IBOutlet weak var btn: 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
}
}
现在,您可以在cellForRowAtIndexPath
方法中使用自定义tableview单元格类创建自定义单元格:
let myCell = mytableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell
您可以通过以下方式为其指定值:
myCell.titleLbl.text = carLocations[indexPath.row]
myCell.DetailLabel.text = "Detailed Text"
myCell.btn.tag = indexPath.row
最终的代码是:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let myCell = mytableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell
myCell.titleLbl.text = carLocations[indexPath.row]
myCell.DetailLabel.text = "Detailed Text"
myCell.btn.tag = indexPath.row
return myCell
}
你的结果将是:
检查this示例以获取更多信息。
答案 3 :(得分:1)