gpt4 book ai didi

swift - 从 NSObject 类更新 UITabBarController 栏项目

转载 作者:行者123 更新时间:2023-11-30 13:30:29 27 4
gpt4 key购买 nike

我有 NSObject 类监听来 self 的服务器的特定事件。

当这个特定事件发生时,我想更新我的 UITabBarController 中名为 TabBarController 的现有 tabBar 项的徽章值。

如何从 NSObject 类访问它?

下面是监听该事件的 NSOBject 类。

connectedToSocketIo() 函数在应用程序启动时启动。

打印(“事件正在运行”)显示在终端中,因此一切正常。

我现在唯一需要的是能够更新特定栏项目的徽章。

import Foundation
import UIKit
import SwiftyJSON


class SocketIOManager: NSObject{

func connectedToSocketIo(){

socket.on("post-channel:App\\Events\\contact\\newContactRequest"){ (data, ack) -> Void in

let json = JSON(data)

if json[0]["id"].string! == self.defaults.stringForKey("user_id")! {

print("event is working")
// I want to change the tab bar item badge here

} else {

print("no event")

}
}
}
}

最佳答案

您应该尝试在 SocketIOManager 类中获取对 UITabBarController 的引用。引用标签栏 Controller 后,您可以更改所需 UITabBarItem 的徽章值。

import Foundation
import UIKit
import SwiftyJSON

class SocketIOManager: NSObject {

/*
var tabBarController: UITabBarController!
*/

// When the tabBarController gets set the connectedToSocketIO function gets automatically called.
var tabBarController: UITabBarController! {
didSet {
connectedToSocketIO()
}
}

init() {
super.init()
}

// Either call this function
init(tabBarController: UITabBarController) {
super.init()

self.tabBarController = tabBarController
connectedToSocketIO()
}

// Or create a setter
func setTabBarController(tabBarController: UITabBarController) {
self.tabBarController = tabBarController
}


func connectedToSocketIo() {

socket.on("post-channel:App\\Events\\contact\\newContactRequest"){ (data, ack) -> Void in

let json = JSON(data)

if json[0]["id"].string! == self.defaults.stringForKey("user_id")! {

print("event is working")

// Set the desired tab bar item to a given value
tabBarController!.tabBar.items![0].badgeValue = "1"

} else {

print("no event")

}
}
}
}

编辑

class CustomTabBarController: UITabBarController {

var socketIOManager: SocketIOManager!

viewDidLoad() {
super.viewDidLoad()
socketIOManager = SocketIOManager(tabBarController: self)
}

}

希望这有帮助!

关于swift - 从 NSObject 类更新 UITabBarController 栏项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36614626/

27 4 0