- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们如何在不使用 nib 文件的情况下在 iPhone 应用程序中加载用户界面?我想使用 .m 文件加载应用程序的用户界面。这可能吗?我们该怎么做。
最佳答案
如果您想以编程方式执行此操作,则 loadView
方法用于在不使用 NIB 或 Storyboard时创建 View 。只需在您的 View Controller 中编写一个 loadView
并在那里创建您的 View 。或者让 loadView
创建一个 UIView
子类的实例,并将自定义 View 的大部分代码放入该 UIView
子类中。这是使用 Interface Builder 构建 NIB 或 Storyboard的替代方法。
如果您在 loadView
中执行此操作,只需确保将 self.view
设置为您创建的 View ,然后其余的 View Controller 代码就可以像其他方式一样引用 view
属性。
参见 Creating a View Programmatically遗留 View Controller Programming Guide 部分。 它概述了基本过程并提供了代码示例。诚然,一些遗留文档并不完全相关(例如,值得注意的是, View 不会在内存压力下“卸载”,因此对 viewDidUnload
的任何引用都不再相关),但它提供了一些上下文以编程方式创建 View 层次结构。
A View Controller Instantiates Its View Hierarchy When Its View is Accessed [断开的链接] 该指南的部分用于概述基本流程:
例如,这是一个 Swift 3 示例 loadView
,用于以编程方式创建其 View 层次结构的 View Controller :
class ViewController: UIViewController {
weak var containerView: UIView!
weak var button: UIButton!
// Note, when programmatically creating views, you:
//
// - Implement the view hierarchy in `loadView` (not to be confused with `viewDidLoad`)
// - Must set `view` property
// - Must not call `super.loadView`
//
// This example creates a `view` for the view controller, and adds two subviews, a container and a button.
// Note, the "container" isn't really needed, but I just did it so I could visually demonstrate that the
// `frame` of the view was set properly. That's why I set it to be a different color of the main `view`
// and inset it.
override func loadView() {
view = UIView()
view.backgroundColor = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
let containerView = UIView()
containerView.backgroundColor = #colorLiteral(red: 0.2549019754, green: 0.2745098174, blue: 0.3019607961, alpha: 1)
containerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(containerView)
self.containerView = containerView
let button = UIButton(type: .system)
button.translatesAutoresizingMaskIntoConstraints = false
button.addTarget(self, action: #selector(didTapButton(_:)), for: .touchUpInside)
button.setTitle("Back", for: .normal)
button.setTitleColor(.white, for: .normal)
containerView.addSubview(button)
self.button = button
NSLayoutConstraint.activate([
containerView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: 10),
containerView.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor, constant: -10),
containerView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 10),
containerView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -10),
button.centerXAnchor.constraint(equalTo: containerView.centerXAnchor),
button.centerYAnchor.constraint(equalTo: containerView.centerYAnchor)
])
}
func didTapButton(_ sender: Any) {
// do something
}
}
关于ios - 我们如何在不使用 nib 文件的情况下在 iPhone 应用程序中加载用户界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17417570/
我正在尝试在手写笔中使用 Nib CSS3 扩展。安装了手写笔和 Nib (尝试了本地和全局 -g)。但没有一个工作,当我做 stylus styles.styl > build/styles.css
我们当前的best-practice for custom views是: 在 Nib 中构建自定义 View 。 在 View Controller 中,以编程方式加载 Nib,从加载的对象数组中获
我是界面构建器的新手,我想要一个包含 UIView 的 3x3 网格的屏幕,每个网格都包含一个 UIImageView 和 4 个 UILabels。 我的逻辑可能有缺陷,但我试图实现这一目标的方式是
我有一个用 Swift 编写的框架/模块,它提供了一些具有 IBDesignable 功能的自定义控件。 目前我正在开发一个基于 CollectionView 的控件。 CollectionView
我有两个 nib 文件 - Main.nib 和 Preference.nib在 Main.nib 文件中,我有一个 NSView 类的实例。它的窗口有一个NSPopUpButton,单击它会显示一个
我想创建一个节标题来加载一个 nib 文件并将其设置为标题 UIView。这个 nib 文件还将有一个关联的类,其中连接了 outlets 和 action,所以我想像平常一样用 nib 加载那个类。
我正在尝试使用来自 this pre-built page menu pod from github 在说明中,它说: var controller : UIViewController =
我是 Cocoa 新手,无法将我的 nib 文件拆分为多个 nib 文件。 我的MainMenu.nib包含一个Tracker Controller对象,它是NSObject的子类。它在我的主菜单中有
我通过 XIB 创建了 CustomViewController。 我还通过作为 UIView 子类的不同 XIB 文件创建了 CustomView。 然后我将 UIView 绑定(bind)到 Cu
我正在使用自定义 UITableViewCell。当我尝试运行我的代码时,我得到了这个异常堆栈,我无法理解问题的根源: terminating app due to uncaught exceptio
我有两个 Nib ParentViewController.xib ChildViewController.xib ParentViewController.xib 包含一个 UIView 和一个 U
我一开始使用了一些 NSWindows 项目,但我的 GUI 正在不断发展,这些元素将更适合作为 NSViews。有没有办法将 NSWindow NIB 转换为 NSView NIB? 最佳答案 不存
我想要具有正确顺序的 View Controller 生命周期功能的完整列表。请任何天才。 请指定ViewController生命周期函数. 请指定序列号,例如用法:,并且仅使用简短描述。示例: 与使
我有两个 Nib :Parent.xib 和 Child.xib。 我已将子 Nib 包含在父 Nib 内以简化绑定(bind)。我在 loadView 中以编程方式设置 subview 。问题是,a
我正在开发一款通用应用程序,iPhone 版本运行良好。我为 iPad 创建了一个新的 nib,并将文件所有者设置为 viewcontroller 类。我连接了所有的 IBOutlets 和 IBAc
我有两个 UIViews,我将它们称为 A 和 B。 A 是B 的容器,每一个都是使用Interface Builder 创建的。 我需要使用界面生成器将我的 B View 添加到 A 中,如下图所示
谁能解释什么时候对同一个 NIB 文件使用多个 View 比使用多个 NIB 文件更好? 一个 NIB 文件可以包含多个 View ,因此有时使用一种方法比使用另一种方法更好。 我是不是太含糊了? 最
简单的任务:我有一个带有 2 个 NIB 文件的应用程序(每个 NIB 文件都有自己的 Controller )。我已经成功地显示了第二个 NIB 文件的窗口,就像我想要的那样,但现在,我想单击 NI
目前,我有一个托管上下文、许多相互关联的实体 NSArrayController,以及几个 Windows,每个 Windows 都使用 1 或 2 个 NSArrayController。 Wind
尝试创建一个 tableView 单元格 xib,但遇到错误“加载了 nib 但未设置 View 导出” 我读过很多帖子,大多数人都说将“ View ”从文件所有者拖到 IB View 。 但是,如果
我是一名优秀的程序员,十分优秀!