Ios UITableViewCells的可扩展内容“;“闪耀”;水槽
我刚刚在swift中创建了一个Ios UITableViewCells的可扩展内容“;“闪耀”;水槽,ios,uitableview,swift,Ios,Uitableview,Swift,我刚刚在swift中创建了一个UITableView,在单击单元格时使用可展开单元格。展开后,单元格显示一个UIDatePicker 扩展本身可以很好地工作,但是只有当单元格被扩展时才能看到的单元格内容会在单元格中发光。下面是我所说内容的屏幕截图: 单元格1已展开,而其他单元格未展开。如您所见,它们的可展开内容是可见的,而实际上不应该是可见的 以下是我使用的代码: func tableView(tableView: UITableView, cellForRowAtIndexPath inde
UITableView
,在单击单元格时使用可展开单元格。展开后,单元格显示一个UIDatePicker
扩展本身可以很好地工作,但是只有当单元格被扩展时才能看到的单元格内容会在单元格中发光。下面是我所说内容的屏幕截图:
单元格1已展开,而其他单元格未展开。如您所见,它们的可展开内容是可见的,而实际上不应该是可见的
以下是我使用的代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cellIdentifier = "Cell";
var cell: NewExpenseTableCell;
var array: NSArray = NSBundle.mainBundle().loadNibNamed("Cell", owner: self, options: nil);
cell = array.objectAtIndex(0) as NewExpenseTableCell;
cell.backgroundColor = UIColor.whiteColor();
cell.descriptionLabel?.text = descriptionLabels[indexPath.item];
return cell;
}
var selectedRowIndex = -1;
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if selectedRowIndex == indexPath.row {
selectedRowIndex = -1;
} else {
self.selectedRowIndex = indexPath.row;
}
newExpenseTable.beginUpdates();
newExpenseTable.endUpdates();
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == selectedRowIndex {
return 206;
}
return 55;
}
有谁能告诉我如何确保
UIDatePicker
仅在单元格展开时可见?以下是我建议如何使单元格重用正常工作的方法
viewDidLoad
方法中,按如下方式注册nib:
self.tableView.registerNib(UINib(nibName: "NewExpenseTableCell", bundle: nil), forCellReuseIdentifier: "NewExpenseTableCell")
cellforrowatinexpath
方法中,将您的前四行替换为:
var cell = tableView.dequeueReusableCellWithIdentifier("NewExpenseTableCell") as NewExpenseTableCell
这看起来像是一个单元重用问题。您是否有
NewExpenseTableCell
的子类?如果是,请显示其代码。如果不是,您在哪里为其UIDatePicker
子视图设置hidden
属性?不,我没有NewExpenseTableCell的子类,它只是扩展了UITableView单元格。我不会在任何地方设置隐藏属性。我应该在哪里设置它?有几种可能的方法。您可以为NewExpenseTableCell
创建子类。然后在setSelected:animated
方法中更改日期选择器上的hidden
属性,并在prepareForReuse
中将hidden
设置为NO
。它现在部分工作,但会产生某种闪烁。我现在还发现这个问题可能与重用有关。有没有一种正确的方法可以重用定制的UITableViewCells(从.xib文件加载的)?尝试使用DidSelectRowatingIndexPath:
中的方法来代替BeginUpdate
/EndUpdate
,这可能有助于闪烁。