在 Swift 的 UIKit 文档中查找有关构造函数的信息

Posted

技术标签:

【中文标题】在 Swift 的 UIKit 文档中查找有关构造函数的信息【英文标题】:Finding information about constructors in the UIKit documentation for Swift 【发布时间】:2014-07-03 12:32:21 【问题描述】:

我目前正在尝试通过阅读 Apple 提供的书籍并参考 Swift 的 UIKit API 来学习 Swift。

这是我在网上找到的创建简单 UIButton 的代码...

var button = UIButton(frame: CGRectMake(0, 20, 100, 32))
button.setTitle("I'm a Button", forState: UIControlState.Normal)
button.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
view.addSubview(button)

一切都是不言自明的,但我不明白的是,如果我在 UIKit documentation 的任何地方都没有看到 UIButton 有一个构造函数(初始化程序),我们怎么知道它。

这是我希望更好地理解的代码行。

var button = UIButton(frame: CGRectMake(0, 20, 100, 32))

再次,如果我认为 UIButton 没有在 UIButton class 中的任何位置列出,我怎么知道 UIButton 有一个构造函数,该构造函数获取一个 CGPoint 作为参数?

谢谢

【问题讨论】:

仅供参考,感谢 Swift 的类型推断系统,您不需要 UIControlState,只需 .Normal 就足够了。 请注意,使用init(frame:) 将不允许您指定按钮的类型。 【参考方案1】:

那是因为UIButton 从它的超类继承初始化器直到NSObject

如果您检查documentation 中的UIView,它是UIControl 的超类,它是UIButton 的直接超类,您将看到以CGRect 作为参数的初始化程序。

因此,基本上,如果您想查看给定类的所有可用初始化程序,您必须在其类层次结构中一直向上查找。

【讨论】:

在 Swift 中,它只从指定它们的最高类继承构造函数,在本例中为 UIView @Kevin 不确定。如果您定义 NSObject 的扩展来添加便利初始化程序,那么 UIButton 将可以使用它。【参考方案2】:

引用的代码行与

UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(0.f, 20.f, 100.f, 32.f)];

在 ObjC 中。

关键点在这里,–initWithFrame:UIView 类的方法,UIButton 继承自该类,因此如果您需要了解更多关于特定方法的信息,您可能需要检查父类类或其父级等,以查找它。

在引用的文档中,您可以找到有关 继承 的部分,例如:

你可以一一检查实际类的父类的方法。这就是您如何获得更多关于未在实际类参考中“列出”的方法的信息。

【讨论】:

非常感谢您的帮助。【参考方案3】:

我的部分困惑是因为我希望找到一个构造函数而不是初始化程序。

UIView 列出了如下的初始化器...

init(frame:)
init(frame aRect: CGRect)

... 这在 Objectice-C 中是有意义的,因为它没有构造函数,而是使用初始化程序,但对于 Swift,我期待更像一个构造函数,其中构造函数的名称与类相同,类似于。 ..

UIButton (frame:)
CGRect UIButton (frame aRect: CGRect)

或者在这种情况下是 UIView 构造函数

UIView (frame:)
CGRect UIView (frame aRect: CGRect)

我不知道我在哪里读到 Swift 支持的构造函数。我想我需要阅读更多关于 Swift 和一般编程的信息。

谢谢

【讨论】:

以上是关于在 Swift 的 UIKit 文档中查找有关构造函数的信息的主要内容,如果未能解决你的问题,请参考以下文章

如何在现有 UIKit 类(如 UIColor)的扩展中添加初始化程序?

在 CGRectMake、Swift、UIkit 中使用变量

Swift:尝试导入 UIKit 时出错

如何在MongoDB中从某些类别中查找特定文档

Swift:UIKit中Demo

Stripe - 单一方法预构建 UI,STPAPIClient.shared().publishableKey iOS Swift UiKit