繁体   English   中英

如何使用swift在故事板模式下重用UITabBarController中的视图控制器

[英]How to reuse view controllers in a UITabBarController in Storyboard mode with swift

我正在使用一个带有3个子视图的UITabBarController,它们都具有相同的结构,只是应用于数据的不同数据或过滤器。 到目前为止,我刚刚制作了3个子视图并将它们连接起来,但我正在重复自己,我知道这不是正确的做事方式。

我的问题是如何使用它的所有功能和视图创建1个子视图,然后在应用正确的过滤器时重复使用它。 例如

点击“所有数据标签”>使用var filter ='all'和var order_by ='created_date'加载视图

点击“已完成标签”>使用var filter ='completed'和var order_by ='completed_date'加载视图

我在想,当我准备segue时,我可以做些什么?

虽然在你的原帖中没有太多的背景,但我认为这可能有用......

您可以在主子视图中设置一个全局变量,您希望根据我的理解在内容中自定义该变量。

var customizationObject = CustomFilters()

而对于CustomFilters,请执行以下操作:

class CustomFilters {
 var filter1: String?
 var filter2: String?
//and so on
}

并在prepareForSegue中将对象传递给目标视图控制器以设置过滤器。

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "Load View") {
        // pass data to next view
    }
}

在新的单子视图中,您可以检查viewWillAppear或viewDidLoad中设置的过滤器(根据您的情况而定)并继续执行您想要执行的操作。

我有同样的问题,我发现ctrl拖动多次从标签视图控制器到相同的标签视图工作。

然后在选项卡控制器中:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    (self.viewControllers![0] as! DailyChartsViewController).title="Daily"
    (self.viewControllers![0] as! DailyChartsViewController).tabBarItem.image=UIImage(named: "daily")
    (self.viewControllers![0] as! DailyChartsViewController).filter = 1
    (self.viewControllers![1] as! DailyChartsViewController).title="Weekly"
    (self.viewControllers![1] as! DailyChartsViewController).tabBarItem.image=UIImage(named: "weekly")
    (self.viewControllers![1] as! DailyChartsViewController).filter = 7
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM