- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
iOS 上的 initWithNibName 很聪明:它会自动为 iPad 而不是 iPhone 加载不同的 NIB(尽管很多人不知道这一点 - 它没有记录在 UIViewController.initWithNibName 中!)。
但是它还能做什么呢?我为此找到的唯一 Apple 文档解释说:
但是没有图像匹配规则的链接,我也找不到任何明确的文档:(。
规则可能包括:“如果将 @2x 放在文件名的末尾,你会得到一个不同的 Retina NIB”(我不知道这是否有效)。
我真正要寻找的是使用了哪些规则的列表。如果我可以更多地使用他们的智能名称匹配(例如,如果他们有“加载横向 Nib 与加载纵向 Nib ”),它将节省大量硬编码 - 在我编写的几乎每个应用程序中都重复进行 -
最佳答案
为了回答您的(主要)问题,这些是 initWithNibName
中文件名匹配的规则:
...However, if you do not specify a nib name, and do not override the loadView method in your custom subclass, the view controller searches for a nib file using other means. Specifically, it looks for a nib file with an appropriate name (without the .nib extension) and loads that nib file whenever its view is requested. Specifically, it looks (in order) for a nib file with one of the following names:
- If the view controller class name ends with the word “Controller”, as in MyViewController, it looks for a nib file whose name matches the class name without the word “Controller”, as in MyView.nib.
- It looks for a nib file whose name matches the name of the view controller class. For example, if the class name is MyViewController, it looks for a MyViewController.nib file.
From UIViewController's documentation under nibName
但还有更多...实际上 NSBundle
有一些非常聪明的规则来定位其中的资源。 Here is the documentation page describing these rules(请参阅:iOS 中的设备特定资源)。
这给我们带来了 to this page描述了所有可应用于捆绑资源的修饰符(和基本模式)(我相信这是您提到的关于图像文件名匹配的链接)。
关于ios - 文件名匹配 initWithNibName 的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10482944/
我使用 initWithNibName 加载详细 View 。我只是在想这些东西有必要发布吗? init 基本上是添加了 1 的保留计数? 最佳答案 @梅尔: 是的,你需要释放它们。 Apple 文档
我的应用程序最近开始崩溃,我需要一些帮助来找出原因。 在应用程序委托(delegate)中,我创建了一个导航 Controller UINavigationController *localNavig
我刚刚开始使用 RubyMotion 学习 iOS 开发,我正在这样做 tutorial 。这似乎很容易理解,但现在我在运行 rake 命令时遇到了这个错误: ColorController.rb:7
我遇到内存泄漏问题。在 Instruments 中,我在这条线上遇到内存泄漏: VDLPlaybackViewController *videoController = [[VDLPlaybackVi
在尝试添加新 View 时遇到了这个非常令人沮丧的问题,我有 2 种不同类型的 View :LargeCoverViewController 和 CoverViewController。 我像这样创建
在我的基于导航的应用程序中,initWithNibName 方法没有被调用/触发 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBu
我肯定我错过了一些简单的东西。我试图在 iOS 中加载一个 subview (模态视图)作为单独的 Controller 。我创建了一个带有指向我的 Controller View 的窗口的 NIB
我想要一个自定义的 initWithNibName,基本上传入另一个 NSString 作为类型来确定此 UIViewController 中的一些逻辑基于类型。所以我设置如下: - (id)init
我需要将一些自定义逻辑放入我的 iPhone 应用程序中,以便根据您运行的 iOS 版本选择不同的 XIB 文件(即 iPhone 或 iPad 将显示不同的 XIB 文件)。 我从第一天开始就构建了
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: initWithNibName VS viewDidLoad 我是 iOS 开发新手。我只是想知道这两个功能之间的主
在 iPhone 应用程序中我需要将一些值传递给一个新的 View Controller 对象,同时它是从另一个 View Controller 类中的方法创建的,这样我就可以在新 View Cont
调用 initWithNib 后,我有额外的保留计数。什么可能导致这种情况? ( Nib 上没有引用点) StepViewController *stepViewController = [[Step
我正在按照 Facebook 的教程发布到用户的墙上:http://developers.facebook.com/docs/howtos/publish-to-feed-ios-sdk/虽然它是在考
我经常使用 initWithNibName 函数来初始化我的 View Controller 中的内容。我只是注意到生成的 initWithNibName 函数对 self 进行了 nil 检查。 -
我过去常常以编程方式创建我的 View ,并且已经开始使用 XIB 文件进行切换。我找到这段代码: -(id)init { self = [super initWithNibName:@"He
iOS 上的 initWithNibName 很聪明:它会自动为 iPad 而不是 iPhone 加载不同的 NIB(尽管很多人不知道这一点 - 它没有记录在 UIViewController.ini
我有一个 iOS 应用程序在模拟器上运行良好,但在所有设备上崩溃并出现此错误: : *** Assertion failure in -[UINib initWithNibName:directory
我想用 Xcode 4.2 的 Storyboard更改以下代码。 UIViewController * example = [[ExampleViewController alloc] in
谁能解释一下何时使用 initWithNibName 以及何时使用 initWithCoder? 最佳答案 initWithNibName: 通常与 View Controller 对象一起使用。这个
我是一名优秀的程序员,十分优秀!