我正在尝试从表中删除空白行。 如果一行是空白的,例如没有文本,则该行没有内容,但会创建一个空格。我想消除这个空间吗?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! ArrayDetailTableViewCell
//configure cell
switch indexPath.row {
case 0:
cell.fieldLabel.text = "1."
cell.valueLabel.text = array.item1
case 1:
if array.item2 != "cod" {
cell.fieldLabel.text = "2."
cell.valueLabel.text = array.item2
} else {
cell.fieldLabel.text = ""
cell.valueLabel.text = ""
default:
cell.fieldLabel.text = ""
cell.valueLabel.text = ""
}
}
答案 0 :(得分:0)
要删除空格,一种方法是在heightForRowAtIndexPath中更改高度返回。
但是在heightForRowAtIndexPath中,我们无法调用cellForRowAtIndexPath,因为它将变为递归并且应用程序将崩溃。因此,我们必须使用我们的数据源来检查哪些元素返回空高度。
像这样:
class My_UITableView: UITableView, UITableViewDataSource, UITableViewDelegate, UIScrollViewDelegate {
var My_Items: [Int: Strings] = [Int: String](); //this is your data source which contains your items.
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if (My_Items.count > indexPath.row){
if let Current_Item = My_Items[indexPath.row] {
if (Current_Item == ""){
return 0; //whatever value you wish to check in your data source item, if it matches your condition send a different height.
}
}
}
return 50;
}
}
答案 1 :(得分:0)
也许不应该删除该行,而应该阻止创建该行。使用numberOfRowsInSection
来计算数组中的项目。
但是我想如果您只想隐藏单元格,可以尝试在代码中使用cell.hidden
:
switch indexPath.row {
case 0:
cell.fieldLabel.text = "1."
cell.valueLabel.text = array.item1
case 1:
if array.item2 != "cod" {
cell.fieldLabel.text = "2."
cell.valueLabel.text = array.item2
} else {
cell.fieldLabel.text = ""
cell.valueLabel.text = ""
cell.hidden = true
default:
cell.fieldLabel.text = ""
cell.valueLabel.text = ""
}
}
答案 2 :(得分:-2)
在viewWillLayoutSubview
ViewController
方法中包含tableView
更改tableView separatorStyle到UITableViewSeparatorStyle.None
。我认为这会产生您需要的差异。