在带有 XIB 的视图控制器上以编程方式初始化 UISegmentedControl

Posted

技术标签:

【中文标题】在带有 XIB 的视图控制器上以编程方式初始化 UISegmentedControl【英文标题】:initialize UISegmentedControl programmatically on a view controller with a XIB 【发布时间】:2011-01-01 19:53:56 【问题描述】:

我有一个带有 XIB 的 UIViewController。我不想摆脱 XIB 并以编程方式为该视图执行所有操作,但是,视图控制器确实有一个 UISegmentedControl 元素,我想以编程方式初始化和填充。

这可能吗?如果可以,UIViewController 上的什么方法是进行这种初始化的最佳选择?有没有办法告诉界面生成器我的 UISegmentedControl 将以编程方式初始化,并且不用担心它有多少段以及其他什么?

【问题讨论】:

【参考方案1】:

继续在视图控制器中为分段控件创建一个 IBOutlet 属性,然后将其连接到您在 Interface Builder 中创建的控件(也可以创建一个 IBAction 方法来响应控件中的更改)。将 Interface Builder 的控件保留为默认值,这并不重要,因为您将在控件显示之前更改它们。

然后在 UIViewController 的 ViewDidLoad 方法中,您可以分配所有分段控件的属性,包括分段数等。

【讨论】:

所以,我重新初始化了 viewDidLoad 中的对象,并记录了所有属性的标题,一切看起来都是正确的。但是,“旧”的 UISegmentedControl 仍然出现在屏幕上,尽管我调用了 [[self view] setNeedsDisplay]。我还需要做些什么来重新绘制这个视图吗?【参考方案2】:

只需将xib中的分段控件设置为基本状态即可。然后在viewDidLoad:

中随意设置

【讨论】:

以上是关于在带有 XIB 的视图控制器上以编程方式初始化 UISegmentedControl的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iOS 上以编程方式调整 UITableView 的大小

以编程方式将 XIB 视图添加到具有边界的视图控制器 - 不居中

将两个 xib 文件中的两个 tableviews 添加到主 xib 视图

如何在 Objective-C 控制器中以编程方式加载用 swift 编写的自定义 XIB 视图

iOS 使用自定义 Xib 和视图覆盖 initWithFrame 的正确方法?

在 Swift 中以编程方式从 MainViewController 切换到 .xib 视图?