在 iOS 中以编程方式生成视图

Posted

技术标签:

【中文标题】在 iOS 中以编程方式生成视图【英文标题】:Generating a view programmatically in iOS 【发布时间】:2012-09-10 15:19:24 【问题描述】:

更新:

感谢大家的所有提示。该教程提到提供了一个 XIB 文件(我没有),所以我在创建项目的方式上做错了。


我正在关注 Apple 的 Core Data Tutorial for ios。本教程尚未针对 ARC 进行更新——显然是针对 Xcode 4,因为它要求“使用 iOS 部分中的基于窗口的应用程序模板创建一个新项目”。

由于 Xcode 4.4.1 下不存在该选项,我查看了 Stack Overflow 并读到我应该创建一个空应用程序。根据教程说明,我没有创建 Storyboard 或 NIB 文件。

除了更新 ARC 的代码(使用 strong 代替 retain 并且未实现提供的 dealloc 方法)之外,我相信我的项目中的代码与教程中的代码相匹配,直到“表视图控制器”一章的结尾。此时,教程说我应该可以run the project and get a view。

相反,我得到一个空白的黑屏。

也许我的问题在这里无法解决,但我应该使用不同的项目模板吗?哪一个?

我只有两个类:RootViewController 和 AppDelegate。 AppDelegate 导入 RootViewController 并包含一个 UIWindow 属性。同样,项目中没有 Storyboard 或 NIB。

如果有特定的地方可以查看,我也可以提供任何代码。

【问题讨论】:

听起来你错过了一个视图。尝试 self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];在 -(void)loadView 为什么不升级到教程支持的Xcode版本呢?如果您遵循教程但错过了您不理解的步骤/不适用于您的 Xcode 版本,您将会遇到很多问题。 @deanWombourne:这里是降级的问题,而不是升级的问题。 哦,哇,你是对的 - 看起来他们的教程落后了!对不起! 【参考方案1】:

如果您想检查您的设置是否正确,请执行以下操作:

    为您的窗口添加背景颜色

    self.window.backgroundColor = [UIColor whiteColor];

    确保你告诉窗口显示自己

    [self.window makeKeyAndVisible];

    确保您的视图控制器是窗口的rootViewController

    self.window.rootViewController = myViewControllerInstance;

【讨论】:

这会进入 RootViewController 的 viewDidLoad 吗?我刚才在该函数的开头添加了一个 NSLog 语句,发现该方法从未被调用过。 我问是因为我的viewDidLoad 似乎实现了可以完成相同类型测试的语句。我将在上面添加我的方法给你看。 这段代码应该进入你的应用代理的-applicationDidFinishLaunchingWithOptions:【参考方案2】:

选择单视图应用程序,并取消选中“使用情节提要”字段。其余部分应相同。

【讨论】:

我最初尝试过那个——它不包括包含核心数据的选项。我意识到我可以自己添加该功能,但它的缺失意味着单视图应用程序不仅仅是过去基于窗口的应用程序的 iOS 5 版本。

以上是关于在 iOS 中以编程方式生成视图的主要内容,如果未能解决你的问题,请参考以下文章

IOS在ViewController中以编程方式删除子视图的位置

如何使以编程方式生成的子视图符合超级视图(iOS)的边界?

在 iOS 8 中以编程方式将视图中的按钮居中使用约束

如何在 iOS 中以编程方式从基本 UIViewController 向我的所有视图控制器添加视图

在 CloudFormation 模板中以编程方式生成子网 CIDR 块(或将整数相加)

在iOS中以编程方式适合方面?