【发布时间】:2020-07-29 16:54:27
【问题描述】:
我得到了带有三个视图控制器设置的标签栏控制器。当我打开其中一个视图控制器时,它会更改其选项卡栏项 badgeValue。当我到达第一个选项卡时,我想更改此 badgeValue。
我创建了一个 Tabbarcontoller: UITabBarController 类,但不知道如何轻松访问子视图的项目。这是我的 Tabbarcontoller 类的代码:
class TabBarController: UITabBarController, MainMethodsDelegate {
var myFriendsRequests: [UserInfo] = []
var friendRequestsCount: Int = 0
func getFriendsRequests_Methods_Destination(myFriendsRequest: UserInfo) {
myFriendsRequests.append(myFriendsRequest)
self.friendRequestsCount = myFriendsRequests.count
DispatchQueue.main.async {
//friendsBarItem.badgeValue = String(self.friendRequestsCount)
}
}
let mainMethods = MainMethods()
override func viewDidLoad() {
super.viewDidLoad()
mainMethods.delegate = self
mainMethods.getFriendsRequests()
}
}
这里是子视图控制器的工作代码:
class FriendsViewController: UIViewController, MainMethodsDelegate {
var myFriendsRequests: [UserInfo] = []
var friendRequestsCount: Int = 0
func getFriendsRequests_Methods_Destination(myFriendsRequest: UserInfo) {
myFriendsRequests.append(myFriendsRequest)
self.friendRequestsCount = myFriendsRequests.count
DispatchQueue.main.async {
self.friendsBarItem.badgeValue = String(self.friendRequestsCount)
}
}
let mainMethods = MainMethods()
override func viewDidLoad() {
super.viewDidLoad()
mainMethods.delegate = self
mainMethods.getFriendsRequests()
}
@IBOutlet weak var friendsBarItem: UITabBarItem!
}
我正在寻找一种简单的方法来访问子视图控制器或至少是它所说的栏项:
//friendsBarItem.badgeValue = String(self.friendRequestsCount)
我不确定委托是否是正确的方法?
【问题讨论】:
标签: ios swift uiviewcontroller delegates uitabbarcontroller