Ich bin ein Anfänger, wenn es um Objective-C geht und ich hoffe, dass Ihnen Experten helfen können. Ich habe einen Webdienst, der Name und Adresse mit JSON-Codierung zurückgibt. Auf meiner App Seite habe ich eine UITableView
mit Untertitel Stil Zellen. Ich zeige Name für das Hauptetikett und Entfernung der Adresse vom aktuellen Gerätestandort im zweiten Etikett. Ich muss UITableViewCell
auf Distanz sortieren. Ich kann Name und Entfernung anzeigen, weiß aber nicht, wie ich nach Entfernung sortieren soll. Ich werde jede Hilfe zu schätzen wissen.UITableViewCell Sortierung
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
NSDictionary *info = [json objectAtIndex:indexPath.row];
NSString *sName = [info objectForKey:@"Name"];
NSString *sAddress = [info objectForKey:@"Address"];
cell.textLabel.text = sName;
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:sAddress completionHandler:^(NSArray *placemarks, NSError *error) {
if (error){
NSLog(@"%@", error);
} else {
CLPlacemark *placemark = [placemarks lastObject];
CLLocation *restLocation = [[CLLocation alloc] initWithLatitude:placemark.location.coordinate.latitude longitude:placemark.location.coordinate.longitude];
CLLocation *userLocation = [[CLLocation alloc] initWithLatitude:self.locationManager.location.coordinate.latitude longitude:self.locationManager.location.coordinate.longitude];
CLLocationDistance distance = [userLocation distanceFromLocation:restLocation];
distance = distance/1000;
NSString *sDistance = [NSString stringWithFormat: @"%@%1.2f%@",@"Distance: ",distance, @" km"];
cell.detailTextLabel.text = sDistance;
}
}];
return cell;
}
Sie sortieren die Zellen nicht tatsächlich. Sie müssen die Daten sortieren, die zum Auffüllen der Tabellenansicht verwendet werden. Tun Sie dies vor dem Laden der Tabellenansicht. Dann erscheinen die Zellen in der gleichen Reihenfolge wie die Daten. – rmaddy