Ios 如何使用滑块过滤UITableview值?

Ios 如何使用滑块过滤UITableview值?,ios,uitableview,nsslider,Ios,Uitableview,Nsslider,我使用自定义UITableview单元格显示当前位置与世界上几个随机位置之间的距离。如果我的当前位置是纽约市,那么我的当前位置与印度之间的距离约为4000英里&我的当前位置与伦敦之间的距离将为2000英里等。现在我想在表视图中使用滑块,以定义指定范围内的位置。例如,如果我将滑块的最小值设置为0英里,最大值设置为50英里,则我希望在Tableview中仅显示该范围内(此处为50英里)的位置。如果增加或减少滑块范围,也应更改tableview中的值。我用CLLocation来计算两点之间的距离 我很

我使用自定义UITableview单元格显示当前位置与世界上几个随机位置之间的距离。如果我的当前位置是纽约市,那么我的当前位置与印度之间的距离约为4000英里&我的当前位置与伦敦之间的距离将为2000英里等。现在我想在表视图中使用滑块,以定义指定范围内的位置。例如,如果我将滑块的最小值设置为0英里,最大值设置为50英里,则我希望在Tableview中仅显示该范围内(此处为50英里)的位置。如果增加或减少滑块范围,也应更改tableview中的值。我用CLLocation来计算两点之间的距离


我很欣赏你的想法

每次更改位置时,应计算距离并将其存储在相应的位置数据中,关键点为距离。现在,在使用滑块的值更改调用的委托方法中,使用

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"(distance BETWEEN %@)",@[[NSNumber numberWithInt:loweValue], [NSNumber numberWithInt:upperValue]]]; 
filteredLocations = [allLocations filteredArrayUsingPredicate:predicate];
[table reloadData]
这里allLocations是一个包含所有位置的数组,filteredLocations是一个存储过滤位置并在tableView中显示它们的数组

如果不想存储距离,则在滑块值处更改代理使用

    NSArray *allPlaces;
    CLLocation *myLocation;
    float lowerValue,uppervalue;
    NSMutableArray *filteredPlaces;
    [allPlaces enumerateObjectsWithOptions:NSEnumerationConcurrent
                             usingBlock:^(id place, NSUInteger idx, BOOL *stop)
    {
        if (uppervalue>[myLocation distanceFromLocation:(CLLocation *)[place objectForKey:@"location"]]>lowerValue)
        {

            [filteredPlaces addObject:place];
        }
    }];
   [tableView reloadData];

它将根据用户的当前位置筛选值。这里allPlaces是包含所有位置的数组,myLocation是用户的当前位置,filteredPlaces是限制内的数组。选择你想要的任何东西。

你需要更具体一些,因为这太宽泛了。您的位置是如何存储的&您是如何让它们显示在表视图中的?这是您需要修改的代码,因此您需要显示它(并告诉我们您已经想到/尝试了什么)Hi Wain。每次更改当前位置时,两点之间的距离都会在cellForRowAtIndexPath处计算,并在tableview自定义单元格标签中更新。