gpt4 book ai didi

ios - 在 Xcode/Swift 中使用预设置 View

转载 作者:行者123 更新时间:2023-11-29 01:11:12 24 4
gpt4 key购买 nike

假设,我在 Xcode 的 Storyboard 中以某种方式设置了一个 View 。我还编写了一个 UIView 子类——“CustomView”供该 View 使用。此 CustomView 具有与 Storyboard 中的 UIView 所包含的元素相对应的属性。

首先,我能否以某种方式将 CustomView 子类的属性连接到 Storyboard 中 View 的 UI 元素( View 具有标签、图像等)?

我知道我可以创建 IBOutlets。但我认为将所有 View 的元素连接到一个 VC 效率不高,因为我在 UIStackView 中堆叠了相同的 CustomView(总的来说,UIStackView 中有三个 CustomView)。

如果不是,以编程方式设置此类元素的最有效方法是什么(我想通过 API 设置属性的值,因此每个 CustomView 看起来都一样,但其元素将具有不同的值)。我不想创建一个完全通过代码在 Storyboard中设置的 View ,因为添加约束和布置 subview 会非常痛苦(尽管我知道这样做是可能的)。

最佳答案

好吧,我想你问的是你有一个 uiview,里面有一个 stackview,MyCustomUIView。你想在同一个 View Controller MyViewController 上重复使用这个 View 三次,并且每次都将不同的数据加载到其中。对吗?

如果这是您想要的设置,那么您可以将所有 socket 设置为 MyCustomUIView。在 MyViewController 上,您为三个 View (view1、view2、view3)创建了三个导出,您将以编程方式将 MyCustomView 加载到每个 View (view1、view2、view3)中,然后从这些 View 访问标签和其他导出作为 view1.label, view2.label 等。顺便说一句,如果您使用 xibs 而不是 Storyboard,这样做会更容易/更干净。我个人会这样做,但如果您的项目是基于 Storyboard的,您可以将 MyViewController 保留在 Storyboard上并为 MyCustomUIView 创建一个 xib,然后按照我上面的描述加载它。

您可以在 Storyboard 中设置它的另一种方法是在 MyViewController 上使用 UITableView 和 3 个单元而不是三个 UIView。通常,出于多种原因,这将是重用 View 的首选方式。原因之一是,如果您想要 4 个 View ,或者只需要 2 个,那么更改起来非常简单。您不必更改 MyViewController 上的所有 UI/约束。

为了解决您对编程限制的担忧……是的,它们很痛苦。然而,Apple 添加了可用于简化编程布局约束的 anchor : https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UILayoutGuide_Class_Reference/index.html#//apple_ref/doc/uid/TP40015257-CH1-DontLinkElementID_13

或者您可以使用 PureLayout cocoapod 进一步简化事情: https://github.com/PureLayout/PureLayout

附加信息

如果使用 xib 并以编程方式添加它,您将执行以下操作:

创建一个 Cocoatouch 类文件 enter image description here

在下一个屏幕上,将其设为 UIViewController 并选中“同时创建 XIB 文件”。 enter image description here

然后在 MyViewController 中:

view1 = NSBundle.mainBundle().loadNibNamed(String(MyCustomView), owner: nil, options: nil).first as! MyCustomView
view1.someLabel.text = "set the text"

view2 = NSBundle.mainBundle().loadNibNamed(String(MyCustomView), owner: nil, options: nil).first as! MyCustomView
view2.someLabel.text = "set the text"

view3 = NSBundle.mainBundle().loadNibNamed(String(MyCustomView), owner: nil, options: nil).first as! MyCustomView
view3.someLabel.text = "set the text"

除了您在评论中提到的使用 tableview 或 collectionview 之外,我实际上不知道如何在没有 xibs 的情况下仅在 Storyboard 中拥有可重用的 View (或者如果可能的话)。也许如果有可能其他人会回复 :)

现在您已经了解了这些基本信息,如果您仍然感到困惑,请在谷歌上搜索一下 xibs。在 stack overflow 中搜索“add xib swift”,你会发现很多结果。如果您有更多问题,当然可以回复!

关于ios - 在 Xcode/Swift 中使用预设置 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35730691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com