单击 UITabBarController 按钮触发图像选择器
Trigger image picker on UITabBarController button click
我在 storyboard
中制作了一个 tabbar
,其中包含 4 个栏项目,我通过右键单击拖动并设置 viewcontroller
segue 将它们全部连接到其他视图控制器。现在对于第二个按钮,我想显示 imagepicker
而不是 viewcontroller
。当我从 UITabBarController
中的情节提要中删除第二个 segue 时,我的第 4 个栏项目消失了。
这是我的 tabview 控制器
class BaseTabBarController: UITabBarController, UITabBarControllerDelegate {
let arrayOfImageNameForUnselectedState = ["home", "explore", "addIcon", "notification", "accountIcon"]
let arrayOfImageNameForSelectedState = ["homeFilled", "exploreFilled", "addIcon", "notificaitonFilled", "accountIcon"]
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
if let count = self.tabBar.items?.count {
for i in 0..<count {
let imageNameForSelectedState = arrayOfImageNameForSelectedState[i]
let imageNameForUnselectedState = arrayOfImageNameForUnselectedState[i]
self.tabBar.items?[i].selectedImage = UIImage(named: imageNameForSelectedState)?.withRenderingMode(.alwaysOriginal)
self.tabBar.items?[i].image = UIImage(named: imageNameForUnselectedState)?.withRenderingMode(.alwaysOriginal)
}
}
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if tabBar.items?.index(of: item) ?? 0 == 2 {
//Clicked add tab, cancel segue and show imagepicker
} else {
selectedTabindex = tabBar.items?.index(of: item) ?? 0
}
}
}
如何在点击第二个栏按钮时显示图像选择器
不要从情节提要中删除第二个 segue 放置虚拟视图控制器以在标签栏内显示标签按钮。在 UITabBarController 的子类中实现 UITabBarController 控制器的委托方法,在第二个 viewcontroller 的 shouldSelect 方法中实现 return false,并在那里呈现 ImagePicker 视图。
代码:
class BaseTabBarController : UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override var prefersStatusBarHidden: Bool {
return false
}
}
extension BaseTabBarController : UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if self.viewControllers?.index(of:viewController) == 1 {
// TO Do code for Image Picker and Present it
return false
} else {
return true
}
}
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
}
}
我在 storyboard
中制作了一个 tabbar
,其中包含 4 个栏项目,我通过右键单击拖动并设置 viewcontroller
segue 将它们全部连接到其他视图控制器。现在对于第二个按钮,我想显示 imagepicker
而不是 viewcontroller
。当我从 UITabBarController
中的情节提要中删除第二个 segue 时,我的第 4 个栏项目消失了。
这是我的 tabview 控制器
class BaseTabBarController: UITabBarController, UITabBarControllerDelegate {
let arrayOfImageNameForUnselectedState = ["home", "explore", "addIcon", "notification", "accountIcon"]
let arrayOfImageNameForSelectedState = ["homeFilled", "exploreFilled", "addIcon", "notificaitonFilled", "accountIcon"]
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
if let count = self.tabBar.items?.count {
for i in 0..<count {
let imageNameForSelectedState = arrayOfImageNameForSelectedState[i]
let imageNameForUnselectedState = arrayOfImageNameForUnselectedState[i]
self.tabBar.items?[i].selectedImage = UIImage(named: imageNameForSelectedState)?.withRenderingMode(.alwaysOriginal)
self.tabBar.items?[i].image = UIImage(named: imageNameForUnselectedState)?.withRenderingMode(.alwaysOriginal)
}
}
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if tabBar.items?.index(of: item) ?? 0 == 2 {
//Clicked add tab, cancel segue and show imagepicker
} else {
selectedTabindex = tabBar.items?.index(of: item) ?? 0
}
}
}
如何在点击第二个栏按钮时显示图像选择器
不要从情节提要中删除第二个 segue 放置虚拟视图控制器以在标签栏内显示标签按钮。在 UITabBarController 的子类中实现 UITabBarController 控制器的委托方法,在第二个 viewcontroller 的 shouldSelect 方法中实现 return false,并在那里呈现 ImagePicker 视图。
代码:
class BaseTabBarController : UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override var prefersStatusBarHidden: Bool {
return false
}
}
extension BaseTabBarController : UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if self.viewControllers?.index(of:viewController) == 1 {
// TO Do code for Image Picker and Present it
return false
} else {
return true
}
}
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
}
}