我正在使用tableview列出我的产品。在" cellForRowAtIndexPath"中,在" dequeueReusableCellWithIdentifier"的帮助下,我们可以访问UITableViewCell的属性。例如,
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell1 = product_tableview.dequeueReusableCellWithIdentifier("productmain", forIndexPath: indexPath) as product_tblCell
cell1.label1.text = "PRODUCT 1"
return cell1
}
但是,如果我们想在此范围之外使用,在此viewController本身中,我们如何访问该UITableViewCell属性?
如果我在这个viewController中创建了这样的任何UIButton动作,
var prop_cell = product_tableview.dequeueReusableCellWithIdentifier("productmain") as product_tblCell
prod_cell.label1.text = "PRODUCT 5"
//NO ERROR SHOWN. BUT FATAL ERROR IN DEBUG AREA.
//UNABLE TO RUN
我的致命错误。 这是我在UITableView中的主要疑问。请回答这个问题。不要只是De-Vote。请指导我。
答案 0 :(得分:0)
嗯,真正的问题是你为什么要出列/访问单元格? 我想也许您想要更新您的手机标签,也许您想将“产品1”名称更新为“产品5” 为此,您需要确定哪个indexPath具有“产品1”并使用以下代码。
cellForRowAtIndexPath(_ indexPath: NSIndexPath) -> UITableViewCell
给它indexPath,它会返回tableViewCell。
您可以使用
创建自己的NSIndexPathinit!(forRow row: Int,
inSection section: Int) -> NSIndexPath
答案 1 :(得分:0)
您也可以尝试这两种方法。
方法1:
在使用相同标记创建和检索单元格时,将标记添加到单元格。
您可以按如下方式添加标记
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell1 = product_tableview.dequeueReusableCellWithIdentifier("productmain", forIndexPath: indexPath) as product_tblCell
cell1.label1.text = "PRODUCT 1"
cell1.tag = 1
return cell1
}
并像这样检索
func buttonTapped(sender: AnyObject) {
var cellTag:Int = 1;//this is same at table cell row number.
var cell = self.tableView.viewWithTag(cellTag) as UITableViewCell
cell.label1.text = "PRODUCT 5"
}
方法2:
使用标志
在按钮单击上设置一个标志,然后重新加载表格数据
func buttonTapped(sender: AnyObject) {
isButtonTapped = true
self.tableView.reloadData()
}
重新加载表格视图
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell1 = product_tableview.dequeueReusableCellWithIdentifier("productmain", forIndexPath: indexPath) as product_tblCell
if(isButtonTapped){
cell1.label1.text = "PRODUCT 5"
}else{
cell1.label1.text = "PRODUCT 1"
}
return cell1
}
方法3:
创建自定义UITableViewCell类,并使用自定义单元格委托方法处理UITableViewController中的按钮单击
供参考,请在故事板中查看Crafting Custom UITableView Cells。 http://code.tutsplus.com/tutorials/ios-sdk-crafting-custom-uitableview-cells--mobile-15702