在新的Xcode4下开始了一个通用项目。我的应用程序适用于iPhone和iPhone iPad设备,但没有很好的iPad设计。我有2个.xib文件用于MainWindow:MainWindow.xib(iPhone设备)& MainWindow-Ipad.xib(iPad设备)。但是我的MainView只有一个.xib文件:MainView.xib。
所以我正在尝试为iPad设备创建一个特定的.xib文件:
新文件>用户界面>查看 - >下一个 - >设备系列:iPad - > MainView-iPad.xib - >保存
当然,没有任何关联,没有引用插座,没有链接到任何类。
我检查新MainView-iPad.xib的每个缩略图,以便将其链接到我的MainViewController类但没有成功!?
我在哪里或如何将其链接到我的MainViewController类? 提前谢谢。
答案 0 :(得分:91)
user763308给出了正确的答案:
将.xib链接到Xcode4下的类:
我还必须:
答案 1 :(得分:4)
您想要创建一个新的UIViewController子类,而不是新的UI文件。这将创建.xib以及类文件(.m和.h)。模板在Cocoa Touch下。
想要链接到现有的视图控制器可能不是一个好主意。如果您遵循MVC(模型 - 视图 - 控制器)设计模式,则将数据类和视图控制器分开。如果可以的话,将东西从MainViewController类中移出并转移到它拥有的数据类中。然后为iPad创建另一个视图控制器,并使其拥有您创建的数据类的实例。
答案 2 :(得分:1)
在通用应用程序的情况下,将.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 */
答案 3 :(得分:1)
要将.xib链接到类文件,您可以执行以下步骤: -
1)转到右侧视图。 2)点击第三个按钮,你有一行询问自定义 class der u只需写下你希望它被链接的类文件的名称。
用于创建引用网点: -
1)你可以复制iPhone .xib中的所有插座并将其粘贴到此处,然后将所有插座拖到文件所有者处,然后连接它们。