在xcode/swift中使用预设置视图(代码片段)

author author     2023-05-13     702

关键词:

假设,我在Xcode的Storyboard中以某种方式设置了一个视图。我还为该视图编写了一个UIView子类 - “CustomView”。此CustomView具有与故事板中的UIView所包含的元素相对应的属性。

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

我知道我可以创建IBOutlets。但我认为将所有视图的元素连接到一个VC并不是那么有效,因为我在UIStackView中堆叠了相同的CustomViews(总体而言,UIStackView中有三个CustomView)。

如果没有,以编程方式设置这些元素的最有效方法是什么(我想通过API设置属性的值,因此每个CustomView看起来都一样,但它的元素会有不同的值)。我不想通过代码创建我在故事板中完全设置的视图,因为添加约束和布局子视图将是一个巨大的痛苦(即使我知道可以这样做)。

答案

好吧,我想你要问的是你有一个带有stackview的uiview,MyCustomUIView。您希望在同一个视图控制器MyViewController上重复使用此视图三次,并每次将不同的数据加载到其中。那是对的吗?

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

你可以在故事板中设置它的另一种方法是在MyViewController上使用UITableView,其中包含3个单元而不是你的三个UIViews。通常,由于许多原因,这将是重用视图的首选方式。一个原因是如果您想要4个视图,或者只有2个视图,则更改非常简单。您不必更改MyViewController上的所有UI /约束。

为了解决您对程序性约束的担忧......是的,它们很痛苦。然而,Apple添加了可用于简化程序布局约束的锚点: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

ADDITONAL INFO

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

创建一个Cocoa Touch类文件qazxsw poi

在下一个屏幕上,使它成为UIViewController并选中“还创建一个XIB文件”。 enter image description here

然后在MyViewController中:

enter image description here

除了在评论中提到的使用tableview或collectionview之外,我实际上不知道如何在没有xib的情况下在故事板中拥有可重用的视图(或者如果可能的话)。也许如果有可能别人会回复:)

现在您已经掌握了这些基本信息,如果您仍然感到困惑,请进行一些关于xib的谷歌搜索。搜索堆栈溢出“add xib swift”也会发现很多结果。当然,如果您有更多问题,请回复!

如何在情节提要 XCode6 (Swift) 中将所有视图控制器设置为风景

】如何在情节提要XCode6(Swift)中将所有视图控制器设置为风景【英文标题】:HowcanIsetallviewcontrollerasalandscapeinstoryboardXCode6(Swift)【发布时间】:2015-06-2212:17:01【问题描述】:我的iPad应用程序是固定在横向上的,并且在整个生命周期... 查看详情

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

】在一个视图控制器中使用不同的按钮上传多个图像(iOS、Xcode9、Swift4)【英文标题】:MultipleImageuploadsinOneViewControllerwithdifferentButtons(iOS,Xcode9,Swift4)【发布时间】:2018-05-1710:04:04【问题描述】:这里有4个UIImageView,每个都有单独... 查看详情

Xcode(Swift):我无法在视图控制器之间传输数据

...将您带到主应用程序,您可以在其中访问不同的程序。我设置密码视图控制器的方式是它具有层,并且在swift文件中,我有一个变量(\'x\ 查看详情

无法使用 segue (Xcode 7) (Swift) 在视图控制器之间传递数据

】无法使用segue(Xcode7)(Swift)在视图控制器之间传递数据【英文标题】:Can\'tpassdatabetweenviewcontrollersusingsegues(Xcode7)(Swift)【发布时间】:2016-09-2016:02:58【问题描述】:我一直在努力使用segue在视图控制器之间传递数据。我看过很多you... 查看详情

在 xcode / swift 3 中点击视图以“选择”它

】在xcode/swift3中点击视图以“选择”它【英文标题】:Tappingaviewinxcode/swift3to\'select\'it【发布时间】:2016-10-1218:16:48【问题描述】:我正在研究用于通过单击“选择”UIViews的方法。在我的UI中,我有几个UIViews我希望是“可选择的... 查看详情

Xcode Swift 2 变量声明(实例成员不能在类型视图控制器上使用)

】XcodeSwift2变量声明(实例成员不能在类型视图控制器上使用)【英文标题】:XcodeSwift2VariableDeclaration(InstanceMembercannotbeusedontypeviewcontroller)【发布时间】:2016-02-1513:35:23【问题描述】:我正在开发一个项目,该项目使用用户在文... 查看详情

触摸手势在 Scrollview(Xcode、Swift)中不起作用

...间】:2019-02-1410:37:49【问题描述】:我尝试在滚动视图中使用按钮。但它们不是“可触摸的”。我没有滚动视图的应用程序正在运行。我检查了是否启用了用户输入,但确实如此。希望有人能给我建议。问候【问题讨论】:你为... 查看详情

视图控制器上的 Xcode / Swift 后退按钮

...你没有提供很多信息,所以很难说出你在问什么。您需要使用从导航控制器的根视图控制器到每个后续视图 查看详情

在 Xcode 9 / Swift 4 中不再可以访问原生 UIKit 元素的子视图?

】在Xcode9/Swift4中不再可以访问原生UIKit元素的子视图?【英文标题】:NativeUIKitelements\'subviewsarenolongeraccessibleinXcode9/Swift4?【发布时间】:2017-08-0402:12:40【问题描述】:故事:所以我正在研究如何隐藏UIPickerView的选择指示器,我看... 查看详情

预加载多个本地webview(代码片段)

因为我可以找到一些过时的信息/不能解决我的问题,我决定再次提出这样的问题。(看到过时/错误的解决方案:)WKWebView:IsitpossibletopreloadmultipleURLs?(Xcode,Swift)IsitpossibletoloadmultipleWKWebViewssimultaneouslyiftheyareondifferentviewControllers?Swift 查看详情

使用 IF 查询在 Xcode 中返回错误

】使用IF查询在Xcode中返回错误【英文标题】:UsinganIFqueryreturnsanerrorinXcode【发布时间】:2020-02-0115:34:18【问题描述】:当我尝试在视图中的Xcode(Swift和SwiftUI)中设置If查询时,我收到以下错误:Cannotinvoke\'padding\'withanargumentlistoft... 查看详情

使视图的高度随图像 Xcode swift 的高度动态变化

...中占据整个屏幕。但是,为了避免图像的剪裁和失真,我设置了约束,因此图像始终具有正确的纵横比。当您在不同尺寸的屏幕上运行此程序时,图像 查看详情

Xcode 7 beta 5、Swift 2:UITableViewCell 的子视图在运行时未添加到 contentView

...ntViewatruntime【发布时间】:2015-08-1517:07:51【问题描述】:使用Xcode7beta5和Swift2时会出现以下现象:使用在情节提要中创建的自定 查看详情

UISearchbar 并在查看控制器 xcode swift 中传递数据

...的信息,它只显示第一行(第一个索引)的信息,注意我使用全局数组将 查看详情

如何在我的 Xcode Swift 项目的不同导航堆栈中从一个视图控制器屏幕切换到另一个?

...有一个带有5个选项卡的选项卡栏控制器,每个选项卡都使用自己的导航控制器进行初始 查看详情

为`swiftpackagegenerate-xcodeproj`设置macos目标?(代码片段)

...-xcodeproj的默认macOS目标是彼此独立确定的。到目前为止,使用Package.swift,--xcconfig-overrides或其他任何解决方案都难以实现。答案我最终创建了swiftxcode,swiftbuild和swifttestbash别名作为解决方法来简化:用swiftpack 查看详情

Xcode 在 Swift 中调试 webview 的 javascript

...是否可以从Xcode/Swift调试中调试Javascript代码(webview)。使用版本xcode12。类似于webview中的chromeinspect调试。【问题讨论】:您可以从Safari进行调试,Xc 查看详情

javahelperclass允许在同一视图中使用glide连续加载多个图像,并在它们之间设置动画。(代码片段)

查看详情