继承位置页面 RCLocationPickerViewController,实现发送位置到聊天界面。

在继承位置页面 RCLocationPickerViewController 后,实现导航栏右键功能,即发送位置消息到聊天界面。
发布时间: 2016-04-06 10:31

回答:

创建 RCLocationPickerViewController 的子类,MyLocationPickerViewController。

实例化子类,设置代理,push 到子类的对象中。

MyLocationPickerViewController *locationPicker = [[MyLocationPickerViewController alloc] init];
locationPicker.delegate = self;
[self.navigationController pushViewController:locationPicker animated:YES];



在子类的对象中实现下面方法,在退出该页面时候调用 rightBarButtonItemPressed 方法,就可以将位置消息发送到聊天界面了。

- (void)rightBarButtonItemPressed:(id)sender {
    if (self.delegate) {
        [self.delegate locationPicker:self
                    didSelectLocation:[self currentLocationCoordinate2D]
                         locationName:[self currentLocationName]
                        mapScreenShot:[self currentMapScreenShot]];
    }
}

- (CLLocationCoordinate2D)currentLocationCoordinate2D {
    return [self.dataSource mapViewCenter];
}

- (UIImage *)currentMapScreenShot {
    return [self.dataSource mapViewScreenShot];
}

- (NSString *)currentLocationName {
    if (self.pois) {
        @try {
            id placeMark = [self.pois objectAtIndex:self.currentSelectedPoi];
            return [self.dataSource titleOfPlaceMark:placeMark];
                } @catch (NSException *exception) {
            } @finally {
        }
    }
    CLLocationCoordinate2D location = [self currentLocationCoordinate2D];
    NSString *_longitude = NSLocalizedStringFromTable(@"Longitude", @"RongCloudKit", nil);
    NSString *_latitude = NSLocalizedStringFromTable(@"Latitude", @"RongCloudKit", nil);
    NSString *_f_longitude = [_longitude stringByAppendingFormat:@":%lf", location.longitude];
    NSString *_f_latitude = [_latitude stringByAppendingFormat:@":%lf", location.latitude];
    NSString *_current_locationName = [_f_longitude stringByAppendingFormat:@" %@", _f_latitude];
    return _current_locationName;
    // return [NSString stringWithFormat:@"经度:%lf 纬度:%lf", location.longitude, location.latitude];
}






我对此仍有疑问!继续追问