【iOS开发】自定义融云选取地位页面和地位信息页面的导航栏

  1. 选取地位页面
  • 创立 RCLocationPickerViewController 的子类:RCDLocationViewController,能够实现自定义导航栏左右按钮
- (void)viewDidLoad {    [super viewDidLoad];    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"自定义左按钮" style:UIBarButtonItemStyleDone target:self action:@selector(leftItemDidPressed:)];    self.navigationItem.leftBarButtonItem.tintColor = [UIColor redColor];    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"自定义右按钮" style:UIBarButtonItemStyleDone target:self action:@selector(rightItemDidPressed:)];    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];}- (void)leftItemDidPressed:(id)sendr {    [self dismissViewControllerAnimated:YES completion:nil];}- (void)rightItemDidPressed:(id)sendr {    [super rightBarButtonItemPressed:nil];}
  • 在聊天页子类重写以下办法,并设置代理,present 到子类的对象中。
/*! 扩大性能板的点击回调 @param pluginBoardView 输出扩大性能板View @param tag             输出扩大性能(Item)的惟一标示 */- (void)pluginBoardView:(RCPluginBoardView *)pluginBoardView clickedItemWithTag:(NSInteger)tag {    switch (tag) {           case PLUGIN_BOARD_ITEM_LOCATION_TAG: {               RCDLocationViewController *vc = [[RCDLocationViewController alloc] init];               vc.delegate = self;               UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:vc];               [self presentViewController:navi animated:YES completion:nil];           }               break;                          default:               [super pluginBoardView:pluginBoardView clickedItemWithTag:tag];               break;       }}
  • 聊天页子类须要遵循代理 RCLocationPickerViewControllerDelegate,并实现办法:
/*! 地理位置抉择实现之后的回调 @param locationPicker 地理位置选取的ViewController @param location       地位的二维坐标 @param locationName   地位的名称 @param mapScreenShot  地位在地图中的缩略图 @discussion 如果您须要重写地理位置抉择的界面,当抉择地理位置实现后,须要调用此回调告诉RCConversationViewController定位已实现,能够进一步生成地位音讯并发送。 */- (void)locationPicker:(RCLocationPickerViewController *)locationPicker     didSelectLocation:(CLLocationCoordinate2D)location          locationName:(NSString *)locationName         mapScreenShot:(UIImage *)mapScreenShot {    RCLocationMessage *locationMessage =    [RCLocationMessage messageWithLocationImage:mapScreenShot location:location locationName:locationName];    [self sendMessage:locationMessage pushContent:nil];}
  1. 地位信息页面
  • 创立 RCLocationViewController 的子类LocationViewController
- (void)viewDidLoad {    [super viewDidLoad];    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"自定义左按钮" style:UIBarButtonItemStyleDone target:self action:@selector(leftItemDidPressed:)];    self.navigationItem.leftBarButtonItem.tintColor = [UIColor redColor];        self.navigationController.navigationBar.barTintColor = [UIColor blueColor];}- (void)leftItemDidPressed:(id)sendr {    [self dismissViewControllerAnimated:YES completion:nil];}
  • 在会话页面重写点击地位音讯的回调
/** *  关上地理位置。开发者能够重写,本人依据经纬度关上地图显示地位。默认应用内置地图 * *  @param locationMessageContent 地位音讯 */- (void)presentLocationViewController:(RCLocationMessage *)locationMessageContent {    // LocationViewController为 RCLocationViewController 的子类    LocationViewController *locationViewController = [[LocationViewController alloc] init];    locationViewController.locationName = locationMessageContent.locationName;    locationViewController.location = locationMessageContent.location;    locationViewController.modalPresentationStyle = UIModalPresentationFullScreen;    UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:locationViewController];    navc.modalPresentationStyle = UIModalPresentationFullScreen;    [self presentViewController:navc animated:YES completion:NULL];}