提问人:JOHNY 提问时间:8/8/2023 最后编辑:JOHNY 更新时间:8/9/2023 访问量:37
如何为选项卡栏控制器创建参照插座
How to create a referencing outlet for a Tab Bar Controller
问:
我在故事板中创建了一个标签栏,我将其链接到一个 swift 文件以添加一些属性,一切正常。但后来我决定更换导航控制器,现在我无法设置添加到选项卡栏的属性。
有人知道如何设置标签栏控制器的属性吗?(我真的看不出标签栏和标签栏控制器之间的区别)。
答:
这是一种特殊的类型,具有内置的.由于选项卡栏已包含在此类中,因此无需为选项卡栏设置选项卡栏,也无需添加委托协议一致性。在选项卡栏 ViewController 类定义中,只需通过变量名称引用选项卡栏,其他所有内容的工作方式将与屏幕截图中的完全相同(我在此答案的底部提供了一张图片以进行比较。UITabBarController
UIViewController
UITabBar
@IBOutlet
tabBar
要使其正常工作,必须首先正确设置 ViewController。以下是我采取的步骤:UITabBarController
在新的 Xcode 项目中,删除默认的 ViewController.swift 文件,并从 Main.storyboard 中删除视图控制器。
从右上角的“库”菜单中,向下滚动,直到找到“选项卡栏控制器”。它应该与其他视图控制器位于该部分中。将其中一个拖放到现在为空的情节提要上。
+
在左侧边栏的文件菜单中,右键单击 -> 新建文件 -> Cocoa Touch Class -> 随心所欲地命名(我只选择了“ViewController”),对于 Subclass of:,选择 .您不必选中“同时创建 XIB 文件”框。
UITabBarController
在 Main.storyboard 中,选择 并在“属性检查器”(在右侧边栏中)下,将其类设置为在上一步中选择的任何名称。现在,当您在助手模式下的“调整编辑器选项”下查看它们时,您可以看到连接到故事板项的 .swift 文件——就像您在屏幕截图中一样。
UITabBarController
将屏幕截图中当前包含的所有选项卡栏外观设置复制并粘贴到视图控制器的方法中,但进行了以下更改:只要有“tabBarMenu”(这似乎是旧@IBOutlet的名称?),请将其更改为“tabBar”。
viewDidLoad
您最终应该在视图控制器 .swift 文件中得到这个:
import UIKit
// This is not the same class as UITabBar! No delegate protocol conformance is needed (it's already built in to this kind of View Controller)
class ViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// The controller's Tab Bar doesn't need (or even allow) an @IBOutlet, because the UITabViewController class is designed with the Tab Bar built-in and already assigned to the name "tabBar"
// Here are all the same settings you had in your screenshot:
tabBar.layer.shadowColor = UIColor.gray.cgColor
tabBar.layer.shadowOpacity = 0.5
tabBar.layer.shadowOffset = CGSize.zero
tabBar.layer.borderColor = UIColor.clear.cgColor
tabBar.layer.borderWidth = 0
tabBar.clipsToBounds = false
tabBar.backgroundColor = UIColor.white
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
}
}
评论
UINavigationController
UITabBarController
UITabBarController
UITabBarController
UITabBarController
UITabBarController