当前知识库站点已不再维护。请移步新版知识库:https://help.rongcloud.cn/

设置聊天页面导航栏按钮的处理方法

由于 SDK 聊天页面的父类中有设置导航栏按钮的处理,会影响用户设置的导航栏按钮,此时可以参考本知识库来设置,会避免这个问题。
发布时间: 2019-08-06 16:26

回答:

实现思路:

重写 SDK 设置导航栏按钮的方法,在方法中做出判断,根据条件来设置自己的导航栏按钮。


实现代码:

1.由于设置导航栏按钮需要在主线程,可以使用下面的宏:

#define rcd_dispatch_main_async_safe(block) if ([NSThread isMainThread]) { block(); } else { dispatch_async(dispatch_get_main_queue(), block);}


2. 重写方法,做出判断,分别创建 setLeftNavigationItem 和 setRightNavigationItem 方法,在对应的方法设置导航栏按钮即可:

- (void)notifyUpdateUnreadMessageCount {
    if (self.allowsMessageCellSelection) {
        [super notifyUpdateUnreadMessageCount];
        return;
    }
    [self __setNavigationItems];
}

3.实现自定义左右导航栏的方法

- (void)__setNavigationItems {
    rcd_dispatch_main_async_safe(^{
       //设置导航栏左边按钮的方法
         [self  setLeftNavigationItem];
       //设置导航栏右边边按钮的方法
        [self setRightNavigationItem];
    });
}

4.在 ViewDidLoad 中调用自定义导航栏方法

- (void)viewDidLoad {
    [super viewDidLoad];
    [self __setNavigationItems];
}