Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 numberOfRowsInSection:在重新加载数据时未调用_Iphone_Objective C_Uitableview - Fatal编程技术网

Iphone numberOfRowsInSection:在重新加载数据时未调用

Iphone numberOfRowsInSection:在重新加载数据时未调用,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,我有一个UITableView,它使用数组列出数据。这个很好用。 我还有一个ui搜索栏,用于在tableview中搜索。当TableView数组中的数据匹配时,这些行将添加到另一个可变数组,而cellForRowAtIndexPath:将显示该可变数组中的数据 但是当我调用重载数据时,numberOfRowsInSection:从未被调用。因此,当滚动时,tableview崩溃,因为它试图从可变数组中获取数据,而不是原始数组中的行(其中包含更多项) 我已经调试了很长一段时间了,但看在上帝的份上,

我有一个
UITableView
,它使用数组列出数据。这个很好用。 我还有一个
ui搜索栏
,用于在
tableview
中搜索。当TableView数组中的数据匹配时,这些行将添加到另一个可变数组,而
cellForRowAtIndexPath:
将显示该可变数组中的数据

但是当我调用重载数据时,
numberOfRowsInSection:
从未被调用。因此,当滚动时,
tableview
崩溃,因为它试图从可变数组中获取数据,而不是原始数组中的行(其中包含更多项)

我已经调试了很长一段时间了,但看在上帝的份上,我找不到原因。Datasource和Delegate连接在
表视图中,因为它可以显示原始数组中的数据

-(NSInteger)表视图:(UITableView*)表视图行数节:(NSInteger)节
{
NSLog(@“isSearching:%d”,isSearching);
//返回节中的行数。
如果(!正在搜索)
返回[原始阵列计数];
NSLog(@“isSearching-返回searchCopyListOfItems”);
返回[searchCopyListOfItems计数];
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
静态NSString*CellIdentifier=@“Cell”;
UITableViewCell*单元格=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
如果(单元格==nil){
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle重用标识符:CellIdentifier];
}
如果(!正在搜索)
cell.textlab.text=[originalArray objectAtIndex:indexPath.row];
其他的
cell.textLabel.text=[searchCopyListOfItems objectAtIndex:indexPath.row];
返回单元;
}

确保不要从任何表视图的委托方法中调用
重新加载数据。这将导致不可预测的行为。另外,请确保以前没有调用
beginUpdates
,并且只从主线程调用
reloadData
方法。

如何重新加载表? 执行
[表relaodData]对吗?
您的桌子是否连接到nib上的IBOutlet?
重新加载时,
是否初始化

您也可以发布碰撞信息。

试试

[self.tableView reloadData];

对我来说,问题是被剔除的节数返回了0,尽管我不打算使用节,但必须有1,因为它在对象层次结构中高于行:

我今天在XCode 6.1中遇到了同样的问题

在我的代码中,我设置了
数据源
委托

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;
}
…奇怪的是,我的代码第一次加载时会填充表格。。。但它随后忽略了对
重新加载数据的任何调用

在情节提要中,当我右键单击情节提要中的表视图时,它的“outlet”单选按钮是一个空圆圈

我从这个空圆圈中拖出一行到父视图
UIView
,然后
reloadData
工作正常


不知何故,我丢失了UITableView控件和用于填充它的.h/.m文件之间的
IBOutlet
链接

对我来说,问题是我试图增加一个值,然后从
numberOfSectionsInTableView

i、 e.
返回someValue++


显然这是不可能的,在我的例子中,它没有从0增加到1,因此返回0个部分,因此没有理由调用
numberOfRowsInSection:

如果
numberOfSections
返回
0
numberOfRowsInSection
将不会被调用。

只需确保在重新加载数据的过程中不会移动表,因为它可能会在您仍在更新数据时调用
cellForRowAtIndexPath:
。我的解决方案是从另一个nib复制粘贴它,然后忘记重新布线
dataSource
delegate
IB中的outlets。我以前也遇到过这种情况,但我想我会将其发布在这里,以防此解决方案帮助遇到此问题的人。

在重新加载表时检查表是否有内存。.谢谢您的提示。不知何故,IB断开了IBOutlet与xib中UITableView的连接。我没有注意到它没有连接,因为原始数据已成功显示。然而,事后看来,我意识到这不是因为引用出口,而是因为委托和数据源连接我犯了同样的错误,我忘记了将数据源出口连接到视图控制器。感谢有关
beginUpdates
的提示!这是给我的!TYVM