Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用PPBadgeView的自定义徽章未显示在navigationitem-swift中_Ios_Objective C_Swift_Uinavigationcontroller_Badge - Fatal编程技术网

Ios 使用PPBadgeView的自定义徽章未显示在navigationitem-swift中

Ios 使用PPBadgeView的自定义徽章未显示在navigationitem-swift中,ios,objective-c,swift,uinavigationcontroller,badge,Ios,Objective C,Swift,Uinavigationcontroller,Badge,我正在创建一个应用程序,当有通知提醒用户时,我想显示徽章图标 我已经找到了名为PPBadgeView的库,并按照以下说明使用了pod'PPBadgeViewSwift',然后安装pod 在编程中,我想用badgeview实现rightNavigationBar,但它并没有显示出来 我所做的: let rightBarButton = UIBarButtonItem(image: UIImage(named: "notification")?.withRenderingMode(UIImageRe

我正在创建一个应用程序,当有通知提醒用户时,我想显示徽章图标

我已经找到了名为
PPBadgeView
的库,并按照以下说明使用了
pod'PPBadgeViewSwift'
,然后安装
pod

在编程中,我想用badgeview实现rightNavigationBar,但它并没有显示出来

我所做的:

let rightBarButton = UIBarButtonItem(image: UIImage(named: "notification")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal), style: .plain, target: self, action: #selector(notificationHandle))

rightBarButton.pp.addBadge(text: "99+")
rightBarButton.pp.moveBadge(x: -5, y: 0)
rightBarButton.pp.setBadge(height: 12)
rightBarButton.pp.setBadge(flexMode: PPBadgeViewFlexMode.tail)

self.navigationItem.rightBarButtonItem = rightBarButton

当我运行应用程序时,我只看到我设置的图标。我不知道我的观点在哪里

如果您使用的是iOS 11+系统,则必须异步执行任务

let rightBarButton = UIBarButtonItem(image: UIImage(named: "notification")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal), style: .plain, target: self, action: #selector(notificationHandle))
self.navigationItem.rightBarButtonItem = rightBarButton

if (UIDevice.current.systemVersion as NSString).doubleValue >= 11.0 {
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.01, execute: {
        rightBarButton.pp.addBadge(text: "99+")
        rightBarButton.pp.moveBadge(x: -5, y: 0)
        rightBarButton.pp.setBadge(height: 12)
        rightBarButton.pp.setBadge(flexMode: PPBadgeViewFlexMode.tail)
    })
} else {
    rightBarButton.pp.addBadge(text: "99+")
    rightBarButton.pp.moveBadge(x: -5, y: 0)
    rightBarButton.pp.setBadge(height: 12)
    rightBarButton.pp.setBadge(flexMode: PPBadgeViewFlexMode.tail)
}

PPBadgeViewSwift没有为UIBarButtonItem提供图像api。您可以这样尝试获取badgeView。让rightBarButton=UIBarButtonItem.init(barButtonSystemItem:.add,target:self,action:#selector(notificationHandle)),如果我想自定义UIBarButtonItem的图像,请检查下面的链接,这可能对swift很有用这很好!但是你能告诉我们为什么必须异步处理任务吗?在iOS 11+中,你无法在
viewDidLoad()
的主线程中访问
uibarbuttoneim
视图,这就是为什么你必须异步处理任务的原因