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

实现思路:

重写 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];
}