除了在UITableView类中已经可用的标头之外,我目前还在为UITableView实现自定义标题(这样我们就可以同时在顶部浮动一个标题标题和一个字幕标题)。
为了做到这一点,我的表被分成许多部分,这些部分可以是:
这两种类型的部分都可以在其中包含行,并且实现可以很好地工作,直到我尝试使用2个自定义标头。
当我尝试添加第二个自定义标头时,当我调用UITableView.RectForHeaderInSection方法时会得到这个异常:
NSInternalInconsistencyException:在无效的第(6)节中请求重排标头
问题是我调用了this.UITableView.RectForHeaderInSection(6),当异常弹出(在完全相同的行上)时,我可以看到我的表至少有7个部分,因此,第6节不应该是无效的。
我正在使用RectForHeaderInSection将我的浮动头放置在它应该在的位置。
有人知道为什么它会崩溃,即使这个部分不应该是无效的?或者另一种方法来获得我需要放置浮动标题的确切框架(这将是我在标题部分中创建的空表视图标题的框架)?
我只找到了这个可能与我的问题相关的question,但我认为在这种情况下,问题的根源并不相同。
编辑:我意识到,当我说节的数量应该是7,这是UITableViewSource子类中的节数,而不是表中的“实际”节数。即使将部分添加到源中,也有可能删除或根本不添加该部分吗?除了查看源代码中的列表外,我还能看到表中的节数吗?
我明天可能会发布代码的一部分,因为现在我意识到没有足够的信息来找出问题所在。
编辑2:代码如下所示:
// first we create the custom header (Title)
var title1 = new CustomHeader();
var section1 = this.Table.TableSource.AddSection();
section1.HeaderView = title1.View;
// Fill section 1 with rows...
var section2 = this.Table.TableSource.AddSection();
// Fill section 2 with rows...
// We create the list of sections that our Title will contain
var title1Sections = new List<TableSection>();
title1Sections.Add(section1);
title1Sections.Add(section2);
// Now we call the method that will create our custom header
this.Table.TableSource.AddHeader(title1.View, title1Sections, this.Table.TableSource.Sections.IndexOf(section1);因此,我们有第1节,它有一个自定义标题标题,浮动在第1节和第2节。第2节,它有一个正常的字幕标题,当它们撞到对方时,它会在标题标题下浮动。现在使用AddHeader方法:
public void AddHeader(UIView headerView, List<TableSection> sections, int indexOfFirstSection)
{
RectangleF rectForHeaderInTableView = this.TableView.RectForHeaderInSection(indexOfFirstSection); /* CRASHES HERE */
// Code that uses rectForHeaderInTableView to make our custom header float over everything...
}如果我只有一个这样的自定义标题,应用程序运行良好,没有崩溃。但是,如果我添加更多的部分(比如第3-4节),就像我在这里添加自定义头一样,当它尝试添加第二个自定义标头时,应用程序在尝试获取rectForHeaderInSection时会崩溃。如果我决定不为第1-2节有一个自定义的标题,而是有一个3-4,它仍然有效。只要我只有一个自定义标题,应用程序就不会崩溃。
发布于 2013-09-26 17:55:00
您是对的,“是否有可能删除部分,或者即使将它们添加到源中,也不会添加它们?”它们没有加在桌子上。
你必须打电话:
ReloadData() 在tableView上同步源和表的数据,以防止无效的节索引。
https://stackoverflow.com/questions/18261540
复制相似问题