Wie zeige ich einen Speicherort aus einer Tabelle auf einer Karte auf dem nächsten Bildschirm an?

StackOverflow https://stackoverflow.com/questions/4560330

Frage

Ich übertrage ein NSArray, das Objekte an einem Bildschirm enthält, in dem die Objekteigenschaften in einer Tabelle angezeigt werden. Jedes dieser Objekte enthält eine Breitengradeigenschaft und eine Länge Eigenschaft. Ich möchte eine Funktionalität implementieren, bei der der Benutzer eine Zelle auswählt (wobei jede Zelle ein Objekt aus dem NSArray darstellt), und der Benutzer wird dann zu einem anderen Bildschirm gebracht, in dem sie eine Annotation sehen können, die den Ort des Objekts auf einer Karte darstellt. und eine Annotation, die den Benutzer darstellt. Wie mache ich das? Hier ist mein relevanter Code aus meiner RootViewController.m -Klasse:

SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
        self.secondViewController = controller;
        [controller release];

        self.secondViewController.locationList = sortedLocations;

        [[self navigationController] pushViewController:controller animated:YES];

Mein relevanter Code in SecondViewController.m sieht so aus:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"locationcell";

LocationTableViewCell *cell = (LocationTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[LocationTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

Location *location = [locationList objectAtIndex:indexPath.row];
cell.locationName.text = location.name; 
cell.locationAddress.text = location.address;
cell.locationDistance.text = location.distance;

return cell;
}

Bitte beachten Sie, dass die sichtbaren Eigenschaften Name, Adresse und Entfernung sind, aber das Standortobjekt enthält auch Breiten- und Längengradeigenschaften. Ich weiß, dass ich einen neuen Bildschirm namens MapViewController erstellen muss. Aber wie gesagt, ich bin mir wirklich nicht sicher, wohin ich von der Tabelle auf dem Bildschirm gehen soll, zu einer Karte, die das Standortobjekt und den Benutzer anzeigt.

War es hilfreich?

Lösung

Erstellen Sie einen neuen ViewController mit MapView und geben Sie den Wert und den Längenwert an den neuen ViewController weiter.

Angenommen, Sie haben den View Controller als MyLocationMapViewController erstellt.

In SecondViewController.m implementieren Sie Folgendes

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    Location *location = [locationList objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:[[MyLocationMapViewController alloc] initWithLocation:location] animated:YES];
}

In myLocationMapViewController.h

  • (ID) initwithLocation: (Ort *) Ort;

In myLocationMapViewController.m

  • (id) initWithLocation: (Ort *) Ort { *locationObj = Ort;

}

Jetzt können Sie den StandortOBJ verwenden, um die Kartenwerte abzurufen und die Koordinaten in MapView anzuzeigen.

Andere Tipps

Erstellen Sie MapViewController -Objekt im SecondView -Controller

Schreiben Sie den folgenden Code in Ihren SecondView -Controller

  • (void) tableView: (uitableView *) tableView didSelectrowatIndexPath: (nSindexPath *) IndexPath {

    MapViewController *mapView = [[mapViewController alloc] initWitHnibName:@"mapViewController" Bundle: [nsbundle mainBundle]];

    self. mapView = controller;
    [mapView release];
    
    
    self.mapView.latit = location.latitude;
    self.mapView.longi = location.longitude;
    [[self navigationController] pushViewController:controller animated:YES];
    

    }

Erstellen Sie 2 doppelte Variablen, die als Latit und Longi in MapViewController bezeichnet werden, um Breiten- und Längengrad zu speichern

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top