iOS - 如何在 Swift 的不同视图控制器中使用小视图

Posted

技术标签:

【中文标题】iOS - 如何在 Swift 的不同视图控制器中使用小视图【英文标题】:iOS - How to use a small view in different view controllers in Swift 【发布时间】:2016-07-25 05:51:54 【问题描述】:

我有一个进度条(带有自己的控制器)。该栏应该根据可见的视图显示在不同的视图中。由于进度相同,如果可能的话,我不想在许多视图中创建许多进度条,而是想在所有这些视图中使用相同的实例。同样,当我需要更改进度条的任何属性时,它也会被普遍反映,这是必需的。

请建议我如何使用这种常见的观点。而且,如果我的策略是错误的,那么对于这种情况,更好的设计是什么。

【问题讨论】:

创建一个声明进度条的类,并将进度条添加到superview中。因此,当视图控制器发生更改时,进度条保持在同一位置 我不知道为什么这个问题被否决了?谁能解释一下? 【参考方案1】:

1) 那么你有 2 个选项。您可以声明一个新的 Class ViewBox(或任何名称),然后在您的代码中使用它

第一个视图控制器

 var box:ViewBox = ViewBox()

当您转场或转换到下一个屏幕时,您可以有一个预定义的变量var box:ViewBox!。然后说当你按下一个按钮时,这个按钮有一个函数叫做transition.

//Now setup the transition inside the Storyboard and name the identifier "toThirdViewController"
override func prepareForSegue(segue:UIStoryboardSegue, sender:AnyObject?) 
    if(segue.identifier == "toThirdViewController") 
        var vc = segue.destinationViewController as! `nextViewController` //The class of your next viewcontroller goes here
        vc.box = self.box
    
    //Since The SecondViewController doesn't need ViewBox, we don't need it there.

在哪里

nextViewController:UIViewController 
    var box:ViewBox!

或者你可以做一个更简单的方法,那就是查找UIPageViewController :)

【讨论】:

当视图来自不同的storyboard时,没有任何直接重定向,我该如何处理?例如,对于转换序列,viewA -> viewB -> viewC,我只需要在 viewA 和 viewC 中显示 viewBox。 您能再澄清一下吗? “当视图来自不同的故事板时,没有直接重定向” 可以说,我在 viewA 中显示 viewBox,然后我转到不需要显示 viewBox 的 viewB。然后我再次转到需要再次显示它的 viewC。其他情况可能是我退出 viewA,然后从父视图转到 viewC。我该如何处理这些情况。 Storyboard 中是否发生了视图之间的这种转换? 是的,过渡可以在单个故事板或不同的@impression7vx 中

以上是关于iOS - 如何在 Swift 的不同视图控制器中使用小视图的主要内容,如果未能解决你的问题,请参考以下文章

在一个视图控制器中使用不同的按钮上传多个图像(iOS、Xcode 9、Swift 4)

iOS Swift:如何实现类似用户界面的堆叠卡片?

如何在 Swift 的不同视图控制器中更新同一实体的属性?

如何在swift中基于Json id从集合视图didSelectItemAt推送不同的视图控制器

如何在 ios swift 中使用故事板平均划分按钮图像?

如何在 iOS 8/Swift 中构建自定义视图控制器的呈现?变量初始化被证明是困难的