如何解决iOS:表格检视中的搜寻列
| 我正在一个表视图中创建一个搜索栏,但该方法委托存在问题,因为我用另一个数组中的数组填充了表视图...我显示了代码:- (void)searchBar:(UISearchBar *)searchBar textDidChange:(Nsstring *)searchText
{
ProgramAppDelegate *appDelegate = (ProgramAppDelegate *)[[UIApplication sharedApplication] delegate];
[tableData removeAllObjects];// remove all data that belongs to prevIoUs search
if([searchText isEqualToString:@\"\"] || searchText==nil){
[myTableView reloadData];
return;
}
NSInteger counter = 0;
for(Nsstring *name in appDelegate.globalArray )
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSRange r = [name rangeOfString:searchText];
if(r.location != NSNotFound)
{
if(r.location== 0)//that is we are checking only the start of the names.
{
[tableData addobject:name];
}
}
counter++;
[pool release];
}
[myTableView reloadData];
}
您可以看到代码\“ for(appDelegate.globalArray中的Nsstring * name)\”无效,因为我用全局数组中的数组元素填充了表格视图
在表格视图的一行中,有一个uitableviewcell,并且在其中有四个标签;
我用这个globalArray的字符串写这些标签,但是这样:
[cell.label1 setText:[[appDelegate.globalArray objectAtIndex:indexPath.row]objectAtIndex:1]];
[cell.label2 setText:[[appDelegate.globalArray objectAtIndex:indexPath.row]objectAtIndex:2]];
[cell.label3 setText:[[appDelegate.globalArray objectAtIndex:indexPath.row]objectAtIndex:3]];
[cell.label4 setText:[[appDelegate.globalArray objectAtIndex:indexPath.row]objectAtIndex:4]];
然后在搜索栏的委托方法中,代码\“ for(appDelegate.globalArray中的Nsstring * name)\”不起作用,如何更改代码?
**我不说我只想检查LABEL1以进行搜索
解决方法
这里的问题是
globalArray
是一个数组数组。因此,循环应类似于。
for(NSArray *rowArray in appDelegate.globalArray )
{
for ( NSString *name in rowArray ) {
// Do your processing here..
}
}
使用tableData
用你的tableView:cellForRowAtIndexPath:
做
[cell.label1 setText:[[tableData objectAtIndex:indexPath.row]objectAtIndex:1]];
[cell.label2 setText:[[tableData objectAtIndex:indexPath.row]objectAtIndex:2]];
[cell.label3 setText:[[tableData objectAtIndex:indexPath.row]objectAtIndex:3]];
[cell.label4 setText:[[tableData objectAtIndex:indexPath.row]objectAtIndex:4]];
在你的numberOfSectionsInTableView:
,return 1
中;
用your9ѭ,return [tableData count];
您应该包括一种方法,当用户停止搜索时,该方法会将搜索数据重置为原始内容。
- (void)resetSearchData {
// Get appDelegate first.
self.tableData = [NSArray arrayWithArray:appDelegate.globalArray];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。