因此,对于我的应用,我有一个文本字段和一个搜索按钮。用户输入用户名,我希望它显示在' usersTable'上。这是代码:
- (IBAction)searchButtonPressed:(id)sender {
NSLog(@"search button pressed");
NSString *searchedText = _searchField.text;
//Queries for users.
PFQuery *filterQuery = [PFQuery queryWithClassName:@"_User"];
[filterQuery setLimit:1000];
[filterQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if (!error) {
// Here you can store fetched data of parse to your array.
NSArray *filteredData;
filteredData = [NSArray arrayWithArray:objects];
}
}];
NSArray *filteredData;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@",searchedText];
NSArray *newArray = [filteredData filteredArrayUsingPredicate:predicate];
}
但是,我根本不知道这是否可以作为一个过滤系统,以及如何填充我的用户表'这是一个带有NSArray数组的UITableView。该表已经填充,我想删除已经存在的所有内容,并在NSArray,newArray中显示结果。任何人都可以批准这个代码并告诉我如何删除,然后填充新数组?
感谢您的帮助
答案 0 :(得分:2)
正确的方法是使用UISearchController,这是一个例子:http://www.jhof.me/simple-uisearchcontroller-implementation/
快速执行此操作的方法是创建一个BOOl属性,该属性将在您搜索/不搜索时更改。在tableview数据源委托方法中,您可以根据此值查询正确的数组。
答案 1 :(得分:1)
您可以使用NSArray填充“usersTable”,这是一个UITableView。 你的userTable(我们称之为myArray)可以是该类的@property:
@interface ViewController()
@property (nonatomic) NSMutableArray *myArray;
@end
然后,为了使用此数组中的数据填充tableView,请确保在tableView委托方法中使用该数组。例如 :
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
return [self.myArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text = [NSString stringWithFormat:@"%@", [self.myArray objectAtIndex:indexPath.row]];
return cell;
}
希望这有帮助。