如何使用Xcode 4将.xib文件链接到类文件
已经开始了新的Xcode4下的通用项目。 我的应用程序可以在iPhone和iPad设备上运行,但不适用于iPad设计。 对于MainWindow:MainWindow.xib(iPhone设备)和MainWindow-Ipad.xib(iPad设备),我有2个.xib文件。 但是我的MainView只有一个.xib文件:MainView.xib。
所以我试图为iPad设备创建一个特定的.xib文件:
新文件>用户界面>查看 - >下一步 - >设备系列:iPad - > MainView-iPad.xib - >保存
当然,没有任何连接,没有引用插座,没有任何链接。
我检查我的新的MainView-iPad.xib的每个缩略图,以便将它链接到我的MainViewController类,但没有成功!
我在哪里或如何将它链接到我的MainViewController类? 提前致谢。
user763308给出了正确的答案:
将.xib链接到Xcode4下的类:
我也然后不得不:
你想创建一个新的UIViewController子类,而不是新的UI文件。 这将创建您的.xib以及类文件(.m和.h)。 该模板在Cocoa Touch下。
想要链接到现有的视图控制器可能不是一个好主意。 如果您遵循MVC(模型 - 视图 - 控制器)设计模式,则可以将数据类和视图控制器分开。 如果可以的话,将事情从您的MainViewController类中移出并移入它拥有的数据类中。 然后为iPad创建另一个视图控制器并使其拥有您创建的数据类的实例。
在通用应用程序的情况下,将.xib与控制器类的比例设置为2:1并不一定是错误的。 这是我遵循的模式:
你有你的MainViewController类。 您有2个.xib文件:MainView-iPhone.xib和MainView-iPad.xib。 这两个文件的“文件所有者”出口设置为MainViewController。 现在,为了确保视图控制器实际加载正确的界面,并根据运行应用程序的设备连接所有正确的插口,我将执行如下操作:
MainViewController* controller = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
controller = [[MainViewController alloc]initWithNibName:@"MainView-iPad" bundle:[NSBundle mainBundle]];
} else {
controller = [[MainViewController alloc] initWithNibName:@"MainView-iPhone" bundle:[NSBundle mainBundle]];
}
/* Present the controller */
现在,我还应该说,如果在不同设备上运行时不需要太多不同的代码路径,这只是一个好主意。 如果在iPad和iPhone上运行时控制器的行为更加专业化,最好在MainViewController中抽象常见行为,然后编写两个子类:MainViewController_iPhone和MainViewController_iPad。 每个子类然后加载相应的.xib文件并在内部处理所有的细节。 在这种情况下,上面的代码看起来更像:
MainViewController* controller = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
controller = [[MainViewController_iPad alloc] init];
} else {
controller = [[MainViewController_iPhone alloc] init];
}
/* Present the controller */
链接地址: http://www.djcxy.com/p/95707.html