K S*_*sha 21 uitabbarcontroller ios swift
目前我有一个连接到tableview控制器的标签栏控制器.当我按下标签栏项目时,我正试图转到桌面视图的顶部.我知道如何到达tableview的顶部.我只是不知道如何在按下项目时执行操作.
Nik*_*nov 28
你应该使用UITabBarDelegate
方法didSelectItem
.将它用作任何标准委托:
class yourclass: UIViewController, UITabBarDelegate {
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
//This method will be called when user changes tab.
}
}
Run Code Online (Sandbox Code Playgroud)
并且不要忘记将标签栏委托设置self
为视图控制器.
erp*_*ker 19
基本上你这样做:
实现didSelectItem方法,如下所示:
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
if(item.tag == 1) {
// Code for item 1
}
else if(item.tag == 2) {
// Code for item 2
}
}
Run Code Online (Sandbox Code Playgroud)这将使您可以访问每个标签项目分接事件.希望能帮助到你!
Ahm*_*adi 10
SWIFT 3
class yourclass: UIViewController, UITabBarDelegate {
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print("Test")
}
}
Run Code Online (Sandbox Code Playgroud)
并且不要忘记在viewDidLoad中将tabBar委托设置为self
override func viewDidLoad(){
super.viewDidLoad()
<YOUR TAB BAR NAME>.delegate = self
}
Run Code Online (Sandbox Code Playgroud)
我在这里实施其他答案时遇到了麻烦.这是一个更全面的答案.它假设您使用的是UITabBarController
(默认情况下,如果您创建一个新的选项卡式应用程序).每次点击视图控制器选项卡按钮时,此解决方案都将打印一条消息.
创建一个名为MyTabBarController.swift的新Swift文件.粘贴以下代码.
import UIKit
class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// tell our UITabBarController subclass to handle its own delegate methods
self.delegate = self
}
// called whenever a tab button is tapped
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if viewController is FirstViewController {
print("First tab")
} else if viewController is SecondViewController {
print("Second tab")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在故事板上选择标签栏控制器.然后在Identity检查器中,将类名设置为MyTabBarController
(即上面代码中类的名称).
就这样.您可以立即运行您的应用,并在用户点击标签栏项目时收到通知.
如果您需要在点击上运行方法,那么您可以在didSelect
方法中执行以下操作.
if let firstVC = viewController as? FirstViewController {
firstVC.doSomeAction()
}
Run Code Online (Sandbox Code Playgroud)您可以将FirstViewController
实现作为委托并处理其中的所有内容.这样你就不需要制作任何自定义UITabBarController
子类并在IB中设置它.然而,让孩子做父母的工作似乎是错误的地方.无论如何,这是:
class FirstViewController: UIViewController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
tabBarController?.delegate = self
}
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
didSelect
无论点击哪个标签,上面的方法都会被调用.
另一种解决方案是viewDidAppear
在选项卡显示的任何View Controller中执行操作。
第一个选项卡视图控制器
import UIKit
class FirstViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("First tab")
}
}
Run Code Online (Sandbox Code Playgroud)
第二个标签视图控制器
import UIKit
class SecondViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("Second tab")
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39743 次 |
最近记录: |