Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 滑动删除单元格会导致tableViewHeader随单元格一起移动_Ios_Objective C_Uitableview_Ios8 - Fatal编程技术网

Ios 滑动删除单元格会导致tableViewHeader随单元格一起移动

Ios 滑动删除单元格会导致tableViewHeader随单元格一起移动,ios,objective-c,uitableview,ios8,Ios,Objective C,Uitableview,Ios8,我在iOS 8中的UITableView上遇到了一个奇怪的错误,我的tableViewHeader。当滑动单元格以显示删除按钮(标准iOS滑动以删除)时,它会将tableViewHeader与正在滑动的单元格一起移动。当我滑动单元格时,表头的移动方式与正在滑动的单元格相同。表视图中没有其他单元格被移动,只有标题和正在移动的单元格。我已经在iOS 7上测试过了,但没有遇到这个问题。在我看来,这似乎是iOS 8中tableViewHeader的一个bug,因为它只出现在这个版本中,而且似乎永远不会出

我在iOS 8中的
UITableView
上遇到了一个奇怪的错误,我的
tableViewHeader
。当滑动单元格以显示删除按钮(标准iOS滑动以删除)时,它会将
tableViewHeader
与正在滑动的单元格一起移动。当我滑动单元格时,表头的移动方式与正在滑动的单元格相同。表视图中没有其他单元格被移动,只有标题和正在移动的单元格。我已经在iOS 7上测试过了,但没有遇到这个问题。在我看来,这似乎是iOS 8中
tableViewHeader
的一个bug,因为它只出现在这个版本中,而且似乎永远不会出现。我看不出有任何理由将标题包含在滑动删除中

下面只是一个模型。应用程序中的“滑动删除”是默认的iOS,没有自定义设置


尝试实现此方法,并为检查刷卡提供适当的条件。如果在标题视图中调用此方法


1.tableView:EditingStyleforRowatineIndexPath:2.tableView:TitleForDeleteConfirmationButtonFrrowatineXPath:3.tableView:HealdIndentWheedingRowatineIndexPath:

这是由于我使用UITableViewCell作为表头而导致的。为了解决刷卡问题,我不使用
tableView.tableHeaderView=cell
,而是使用以下方法:

UIView *cellView = [[UIView alloc] init];
[cellView addSubview:cell];
tableView.tableHeaderView = cellView
我不知道这为什么能解决这个问题,特别是它在iOS 7上工作,但它似乎能解决这个问题

确保将所有视图添加到单元格视图中,就像添加到单元格内容视图中一样,否则按钮将不会响应

作品:

[单元格添加子视图:视图]
[自添加子视图:视图]

不起作用:


[cell.contentView addSubview:view]
[self.contentView addSubview:view]

基于ferris的答案,我发现使用UITableViewCell作为节头时,最简单的方法是在viewForHeaderInSection中返回单元格的contentView。代码如下:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let  cell : cellSectionHeader = tableView.dequeueReusableCellWithIdentifier("SectionHeader") as cellSectionHeader
    return cell.contentView
    //cellSectionHeader is my subclassed UITableViewCell
}

避免标题随单元格移动的方法是在viewForHeaderInSection中返回单元格的contentView。如果您有一个名为SectionHeaderTableViewCell的子类UITableViewCell,这是正确的代码:

-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    SectionHeaderTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SectionHeader"];
    //Do stuff to configure your cell
    return cell.contentView; 
}

除了Brad的答案外,Victor的背景色丢失问题通过以下方式得到解决:

cell.backgroundColor = UIColor.cyanColor()
致:


.contentView方法没有提到的一个问题是,如果表视图单元格使用LayoutSubView,则可能无法获得所需的行为,因为不会调用LayoutSubView。最后,我创建了一个完全独立的UIView子类,该子类支持普通单元格操作和标题操作,并创建了一个使用该子类的最小UITableView单元格类。

SWIFT 3.0测试解决方案。如Objective-C的第一个示例所述;关键点是返回单元格。contentView而不是单元格,因此新的格式语法如下所示

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    // HeaderCell is the name of custom row designed in Storyboard->tableview->cell prototype
    let cell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell")

    cell.songLabel.text = "Your Section Name"
    return cell.contentView
}

将您的问题详细发送给@FerrisI我也遇到了这个问题,我很惊讶没有其他人有这个问题。如何创建标题?我通过原型单元格创建了它,并将它们作为标题重用。不过,我还没有尝试使用默认标题,也没有从头开始创建新标题(代码)。我还想指出,任何滑动都不仅会导致它自己的节标题一起移动,还会导致所有其他节标题一起移动。你这边也一样吗?解决了这个问题。如果使用UITableViewCell作为表的标题,请将其包装在UIView中。看看我的回答@CyberMewI建议按照@ferris的建议,在UIView中包装标题单元格。我尝试了下面引用cell.contentView的方法,但我的单元格上的一些按钮无法显示。这似乎无法解决任何问题<代码>表格视图:在编辑RowAtIndexPath时应删除:
永远不会被调用。我相信这是针对分组表的。至于
editingStyleForRowAtIndexPath:
,它只会被正在刷卡的单元格调用一次。不管怎样,谢谢你的帮助。我刚试过,效果很好。然而,我在标题单元格中有一个按钮,它不再对触摸做出响应。这就好像userInteractionEnabled被设置为NO,即使我确保所有的都是YES。也有同样的问题。我发现,如果将对象添加到单元格contentView,则它们没有响应。如果将它们添加到“单元格”视图中,它们工作正常。例如:
[cell addSubview:view]或在自定义单元格中:
[self addSubview:view]@CyberMewI修复了它。我没有直接将单元格添加到UIView,而是添加了cell.contentView。这样就不会有其他改变——你仍然可以在故事板中创建你的单元格。现在一切都好了。即使是我以前轻敲标题并导致选择第一行的问题现在也已修复:)。在我的例子中,我最初将主分割视图的宽度改为更宽,因此作为一个额外的步骤,我现在还必须设置cell.contentView的框架和边界(当然还有故事板中的约束),以使其在iOS7和iOS8上看起来正确。谢谢你给我指路!:)这就是我(在viewForHeaderInSection中)使用的代码:
UIView*cellView=[[UIView alloc]initWithFrame:headerView.contentView.bounds];[cellView添加子视图:headerView.contentView];//headerView是来自出列返回cellView的单元格override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    // HeaderCell is the name of custom row designed in Storyboard->tableview->cell prototype
    let cell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell")

    cell.songLabel.text = "Your Section Name"
    return cell.contentView
}