在预先填充的表视图上显示NSArray

时间:2015-03-30 20:45:43

标签: ios objective-c uitableview parse-platform nspredicate

因此,对于我的应用,我有一个文本字段和一个搜索按钮。用户输入用户名,我希望它显示在' 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中显示结果。任何人都可以批准这个代码并告诉我如何删除,然后填充新数组?

感谢您的帮助

2 个答案:

答案 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;
}

希望这有帮助。