
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
重写 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]; }