2011-12-14 38 views
0

我正在加載帶有註釋的mapview。我已經編寫了如下所示的代碼。由於我是OOPS的新手,我知道我可能犯了很多錯誤。如果有人會檢查我的代碼並提出一些建議,這將非常有幫助。以正確的方式加載mapview

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

if(groupOrContactSelected){ 
    UIBarButtonItem *infoButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.infoButton]; 
    UIBarButtonItem *segmentedButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 
    flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
    NSArray *toolbarItems = [NSArray arrayWithObjects: infoButtonItem, flexibleSpace, segmentedButton, nil]; 
    [self setToolbarItems:toolbarItems]; 
    self.navigationController.toolbar.translucent = true; 
    self.navigationController.toolbarHidden = NO; 
    [infoButtonItem release]; 
    [segmentedButton release]; 
    [flexibleSpace release]; 

    mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    mapView.delegate=self; 

    [self.view addSubview:mapView]; 

    addressbook = ABAddressBookCreate(); 

    for (i = 0; i<[groupContentArray count]; i++) { 

     person = ABAddressBookGetPersonWithRecordID(addressbook,[[groupContentArray objectAtIndex:i] intValue]); 
     ABMultiValueRef addressProperty = ABRecordCopyValue(person, kABPersonAddressProperty); 
     NSArray *address = (NSArray *)ABMultiValueCopyArrayOfAllValues(addressProperty); 
     for (NSDictionary *addressDict in address) 
     { 
      addAnnotation = nil; 
      firstName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); 
      lastName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty); 
      NSString *country = [addressDict objectForKey:@"Country"]; 
      NSString *streetName = [addressDict objectForKey:@"Street"]; 
      NSString *cityName = [addressDict objectForKey:@"City"]; 
      NSString *stateName = [addressDict objectForKey:@"State"]; 
      NSString *fullAddress = [streetName stringByAppendingFormat:@"%@/%@/%@", cityName, stateName, country]; 
      mapCenter = [self getLocationFromAddressString:fullAddress]; 
      if(stateName != NULL || country != NULL || streetName != NULL || cityName != NULL){ 

       addAnnotation = (SJAddressAnnotation *)[mapView dequeueReusableAnnotationViewWithIdentifier:[groupContentArray objectAtIndex:i]]; 

       if(addAnnotation == nil){ 
        addAnnotation = [[[SJAddressAnnotation alloc] initWithCoordinate:mapCenter title:firstName SubTitle:lastName Recordid:[groupContentArray objectAtIndex:i] ]         autorelease]; 
        [mapView addAnnotation:addAnnotation];} 
      } 
     } 
     CFRelease(addressProperty); 

    } 
    [self zoomToFitMapAnnotations:mapView]; 

    [self.navigationItem setHidesBackButton:YES animated:YES]; 
    NSString *mapTitle = localizedString(@"MAP_TITLE"); 
    [self setTitle:mapTitle]; 
    [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 

    NSString *close = localizedString(@"CLOSE"); 
    UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:close style:UIBarButtonItemStylePlain target:self action:@selector(onClose:)]; 

    self.navigationItem.rightBarButtonItem = closeButton; 
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
    [closeButton release]; 
} 

[searchDirectionSegmentedControl release]; 
[mapView release]; 
} 

我可能犯了很多錯誤。所有的建議將不勝感激。由於

+0

建議用什麼方式和關於什麼? – Sarah 2011-12-14 06:23:55

回答

相關問題