现在我正在阅读Head First iPhone和iPad Development第二版(Dan Pilone,Tracey Pilone)一书。而且,根据书中的练习,我需要在书中将程序从iphone更改为通用,xcode会自动生成MainWindow-iPad.xib,但我的xcode却没有。另外从书中开始的程序有MainWindow.xib文件,但我没有。我现在应该怎么做?如果我将更改MasterViewController.xib(导航模板),则更改也将在iPhone模拟器版本中。
答案 0 :(得分:1)
根据您的评论重新提出您的问题:
如果smb想制作一个通用程序,xib需要在ipad和iPhone上有所不同,该怎么办?
您可以在appDelegate中执行此操作:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[HWViewController alloc] initWithNibName:@"HWViewController_iPhone" bundle:nil];
} else {
self.viewController = [[HWViewController alloc] initWithNibName:@"HWViewController_iPad" bundle:nil];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
该代码直接来自XCode中的单视图模板 - 但无论是否有模板,代码都有效。
它假设您有两个单独的xib文件,一个名为“HWViewController_iPhone.xib”,另一个名为“HWViewController_iPad.xib”。只要名称与代码中的initWithNibName:
字符串一致(在代码中省略'.xib'),名称就无关紧要了。
您可以使用New>在XCode中创建xib文件文件>用户界面>图
答案 1 :(得分:0)
也许你是从一个不同的项目模板开始的。
通常这本书从像“单一视图应用程序”这样的模板开始,你必须使用这一本来重现一步一步的教程。
答案 2 :(得分:0)
你的书已经过时了。您可以通过添加xib并将其设置为Target Summary中的部署信息中的主接口来实现该路由。
实际上,没有理由这样做。更好的方法是创建一个根视图控制器并在您的应用程序委托中进行设置。
RootViewController *rootViewController = [[RootViewController alloc] init];
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
答案 3 :(得分:0)
现在我在Appdelegate.m中有了这段代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPhone" bundle:nil];
} else {
self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPad" bundle:nil];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}
3个错误:在'AppDelegate *'类型的对象上找不到属性'viewController' 在这个字符串之后:
self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPhone" bundle:nil];
self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPad" bundle:nil];
self.window.rootViewController = self.viewController;