我最近开始从"iOS编程大农场指南第4版“中学习obj-c的iOS。这个版本于2014年发布,是用Xcode 5编写的。
我正试图制作一个简单的应用程序,有两个按钮和两个标签。标签连接到两个数组,当按下按钮时,相应数组中的对象将显示在相应的文本标签中(这是第1章中的Quiz应用程序)。
我在Xcode 6中将项目创建为一个单独的View应用程序,并将我的所有对象都放在视图控制器类中。我有两个标签、两个按钮、两个数组和一个int来跟踪必须从数组中显示的对象。
书中说,我应该在initWithNibName方法中初始化数组。我试过了,但出于某种原因,它从来没有被调用过。因此,我将数组的初始化更改为init方法。它们初始化得很好,但是当从另一个方法调用它们时,它们就是nil。你知道为什么会这样吗?
我面临的第二个问题是,我无法将故事板的内容显示在屏幕上。它说,我应该在ViewController中创建一个AppDelegate实例,并将其设置为根窗口控制器,但我得到的只是一个白色窗口(如果没有设置颜色,则是黑色的)。
更新:我将数组的初始化从init方法更改为viewDidLoad方法,现在它们似乎运行良好。不过屏幕上什么都没有。
发布于 2015-08-11 14:46:56
这听起来像是你从应用程序委托和故事板初始化你的UIViewController。如果您在XCode中创建了一个新项目,即一个“单一视图应用程序”,那么您就根本不需要触摸应用程序委托就可以在屏幕上获得一些东西。
我相信您的两个问题都与此相关,因为听起来您在屏幕上看到了一个空的UIViewController (您在应用程序委托中创建的那个)。
至于数组的初始化,viewDidLoad是一个很受欢迎的地方。
发布于 2015-08-11 14:52:54
如果您使用的是故事板,则不会调用initWithNibNameOrNil方法。在BNR书中,它教您使用XIB文件,XIB文件确实使用这种方法。如果您想学习教程,我建议您使用XIB文件。
为了使用一本书,我建议下载Xcode的任何版本,否则你在学习的时候会遇到很多令人困惑的问题。
如果您想下载以前版本的Xcode,请参阅以下文章:How to download Xcode DMG or XIP file?
https://stackoverflow.com/questions/31944879
复制相似问题