我有这样的记录。
FirstName - LastName - PhoneNo - 地址 - 名称
A - Mick - 789367789 - 纽约 - 教授
B - Jossef - 534647458 - 美国 - 医生
C - Sha - 342576765 - 美国 - 医生
D - Gee - 535346457 - 美国 - 商人
......喜欢这个
我在UITeView中使用UISearchBar显示一个FirstName。搜索工作正常,它根据您在SearchBar中键入的关键字过滤数据,但假设您正在键入M它列出M的所有项目,然后当我点击M的第一项时,它显示A的详细信息然后M在下一个视图。
我认为你可以理解我的问题。
如何解决这个如何在与记录对应的Next视图中传递多个值的问题。?
谢谢,
这个函数我从TableView的相同代码(带有搜索栏的苹果示例代码)中获取。 我按照我的逻辑修改了这个。
- (void) searchTableView
{
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
NSInteger TotalNoOfRecords=[self.SearchtableDataSource count];
for (int i=0;i<TotalNoOfRecords;i++)
{ NSDictionary *dictionary = [self.SearchtableDataSource objectAtIndex:i];
NSArray *array = [dictionary objectForKey:@"Title"];
NSString *arrayID= [dictionary objectForKey:@"ID"];
NSLog(@"Testing - Id-%d",arrayID);
[searchArrayID addObject:arrayID];
[searchArray addObject:array];
}
for (NSString *sTemp in searchArray)
{
NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
{
[copyListOfItems addObject:sTemp];
}
}
[searchArray release];
searchArray = nil;
}
这是我的didSelectRowAtIndexPath代码,我知道这需要修改,但我不知道怎么做?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *dictionary = [self.SearchtableDataSource objectAtIndex:indexPath.row];
FirstName= [dictionary objectForKey:@"FirstName"];
LastName=[dictionary objectForKey:@"LastName"];
DetailViewController *ivc = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];
ivc.FirstName = FirstName;
ivc.LastName=LastName;
ivc.Title=[dictionary objectForKey:@"Details of Person"];
[self.navigationController pushViewController:ivc animated:YES];
[ivc release];
}
请帮帮我......
谢谢
答案 0 :(得分:0)
检查您是否正在 -didSelectRowAtIndexPath 中的 copyListOfItems 中检索值。
修改强>
你应该首先清楚地理解逻辑。 SearchedTableDatasource包含要在tableview中加载的tableViews完整数据集。 copyListofItems包含过滤的项目。所以在didSelectRowAtIndexPath中你应该编码如下,
if(searching==YES)
{
//retrieve the values from copyListofItems array
}
else
{
//retrieve the values from SearchedTableDatasource array
}
并且您正在使用void函数进行搜索,如果是,则将copyListofItems数组声明为global,或者使函数返回NSMutableArray实例。
答案 1 :(得分:0)
在didSelectrowatIndexPath方法中更改你的init方法并传递字典对象并在那里设置DetailViewController属性,我希望这对我有效。