Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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
Iphone 调用[tableView reloadData]可恢复帧更改_Iphone_Ios_Objective C_Uitableview_Ios6 - Fatal编程技术网

Iphone 调用[tableView reloadData]可恢复帧更改

Iphone 调用[tableView reloadData]可恢复帧更改,iphone,ios,objective-c,uitableview,ios6,Iphone,Ios,Objective C,Uitableview,Ios6,在我的应用程序中,我有一个UITableView在UIViewController内 在UITableView上方,我有一个UISearchBar,用于过滤UITableView。我不想使用传统的UISearchBar,因为它是一个非常定制的应用程序 我订阅键盘出现和消失的通知,并相应调整UITableView的大小。我遇到的问题是,只要我搜索并过滤UITableView,我就会调用: [self.tableView reloadData]; 仅显示过滤后的结果。问题是,UITableView

在我的应用程序中,我有一个
UITableView
UIViewController

UITableView
上方,我有一个
UISearchBar
,用于过滤
UITableView
。我不想使用传统的
UISearchBar
,因为它是一个非常定制的应用程序

我订阅键盘出现和消失的通知,并相应调整
UITableView
的大小。我遇到的问题是,只要我搜索并过滤
UITableView
,我就会调用:

[self.tableView reloadData];
仅显示过滤后的结果。问题是,UITableView将自身大小调整回其原始高度,从而仍将一些单元格隐藏在键盘后面


有人能告诉我如何更改此行为吗?

若要调试此行为,我将创建
UITableView
的子类,并重写
setBounds:
方法以查看是谁在修改它。一旦理解并解决了这个问题,就可以扔掉UITableView子类,重新使用正常的东西

- (void)setBounds:(CGRect)bounds
{
    // Break point here and inspect stack
    [super setBounds:bounds];
}

这听起来可能是一个自动布局问题——这些问题通常在某些操作导致视图重新绘制自身后出现。如果使用自动布局,则应通过调整约束而不是设置框架来调整表视图(或其包含视图)的大小。一种方法是在视图底部创建一个约束的IBOutlet,并在代码中修改其常量。

我遇到了一个类似的问题——与键盘无关,但我试图在同一事件上调整表的大小并重新加载表数据


似乎有效的方法是在
tableCell:cellforrowatinexpath
中调用表大小调整方法。为了提高效率,我还向ViewContoller提供了一个
BOOL
,说明表格是否已经重新定位,以便表格不会针对出现的每个单元格重新定位。

您确定这是高度更改而不是位置更改吗?我想这只是重置回故事板中提供的原始约束,因此,它可能不仅仅是在改变高度,而是在做更多的事情,但是出于所有的意图和目的,这就是我所看到的。当你重新加载你的桌子时,你是否隐藏了键盘?没有回答问题,应该是一个注释。@Mar0ux,很抱歉。无法在注释中发布代码。