Swift - 使用 selectedIndex 更改 var
Posted
技术标签:
【中文标题】Swift - 使用 selectedIndex 更改 var【英文标题】:Swift - Change var with selectedIndex 【发布时间】:2018-06-11 20:15:20 【问题描述】:我正在尝试通过更改tabBarController
的selectedIndex
从ViewController1
变为ViewController2
。
在 ViewController1 中:
func action()
_ = self.tabBarController?.selectedIndex = 4
在 ViewController2 中:
class ViewController2: UIViewController
var isOnInfo = true
我的问题很简单。我想在action()
函数中更改isOnInfo
的值。
有可能吗?
另一种方法是创建一个全局变量,但如果我能避免这样做会更好。
感谢您的回答。
【问题讨论】:
【参考方案1】:我可以建议您在标签栏控制器中移动您的标签更改逻辑。 创建自己的类 TabBarController(UITabBarController 的子类),将其设置为故事板中标签栏控制器的自定义类,并将函数 action() 移动到那里。
import UIKit
class TabBarController: UITabBarController
override func viewDidLoad()
super.viewDidLoad()
func action(isOnInfo: Bool)
selectedIndex = 4
if let viewControllers = self.viewControllers,
let viewController2 = viewControllers[selectedIndex] as? ViewController2
viewController2.isOnInfo = isOnInfo
然后在viewController1中:
if let tabBarController = self.tabBarController as? TabBarController
tabBarController.action(isOnInfo: false)
【讨论】:
我试过了,但它不起作用。 viewController2.isOnInfo 的值没有改变... 奇怪。我用它创建了一个项目,它对我有用。你的标签栏有多少个视图控制器? @KevinB 可能出现的问题: 1)如果不能将self.tabBarController赋值为? TabBarController 那么你应该在 StoryBoard 上将 TabBarController 分配给你的 2)如果你不能将 viewController 分配为? ViewController2 那么你应该检查你的 selectedIndex。 SelectedIndex 从 0 开始!例如,如果您想将第二个 viewController 设置为 2,则 selectedIndex = 1【参考方案2】:您可以在 tabbarcontroller 中的选定索引处获取 viewcontroller 的对象。拥有它后,您可以修改任何公共属性。
func action()
_ = self.tabBarController?.selectedIndex = 4
if let vc2 = self.tabBarController?.viewControllers![4] as?
ViewController2
vc2.isOnInfo = true
【讨论】:
以上是关于Swift - 使用 selectedIndex 更改 var的主要内容,如果未能解决你的问题,请参考以下文章
关于swift 自定义TabBarView使用系统tabar遇到的问题
selectedIndex 选择器(检查选择数组是不是有 selectedIndex > 0)[关闭]
带有 selectedIndex 设置 matStepperNext/matStepperPrevious 的角步进器不起作用