【问题标题】:Converting a iphone app to universal application in xcode 4 error在 xcode 4 错误中将 iphone 应用程序转换为通用应用程序
【发布时间】:2012-09-11 09:59:11
【问题描述】:

我正在尝试将 iphone 应用程序转换为通用应用程序,这是我的代码

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];

        //  self.viewController = [[SearchViewController alloc] initWithNibName:@"SearchViewController" bundle:nil];
        [self.window addSubview:self.viewController.view];
        [self.timer invalidate];
        self.timer = nil;
        self.timer = [NSTimer scheduledTimerWithTimeInterval: 3 target: self selector: @selector (pullnextview) userInfo: nil repeats: YES];
    } else {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
        [self.window addSubview:self.viewController.view];
        [self.timer invalidate];
        self.timer = nil;
        self.timer = [NSTimer scheduledTimerWithTimeInterval: 3 target: self selector: @selector (Ipadpullnextview) userInfo: nil repeats: YES];
    }

================================================ ====================================

-(void)pullnextview
{
    [self.viewController.view removeFromSuperview];
    [self.timer invalidate];
    self.timer = nil;
    NSArray *viewsArray;
    //create the first view controller

    SearchViewController *navController0 = [[SearchViewController alloc] initWithNibName:@"SearchViewController" bundle:nil];

    navController0.tabBarItem.image = [UIImage imageNamed:@"search.png"];
    [navController0 setTitle:@"Neuen Termin buchen"];

    //create the navigation controller and use NavRootController as its root
    UINavigationController *nav0 = [[UINavigationController alloc] initWithRootViewController:navController0];
    UINavigationController *nav;
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    int uid = [standardUserDefaults integerForKey:@"dmloginid"];
    [standardUserDefaults synchronize];

    if(uid>0)
    {

        SearchViewController *navController = [[SearchViewController alloc] initWithNibName:@"SearchViewController" bundle:nil];
        navController.tabBarItem.image = [UIImage imageNamed:@"appointment.png"];
        [navController setTitle:@"Meine Termine"];
        nav = [[UINavigationController alloc] initWithRootViewController:navController];

    }
    else
    {
        LoginViewController *navController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
        navController.tabBarItem.image = [UIImage imageNamed:@"appointment.png"];
        [navController setTitle:@"Meine Termine"];
        nav = [[UINavigationController alloc] initWithRootViewController:navController];

    }


    SettingsViewController *navController3 = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    navController3.tabBarItem.image = [UIImage imageNamed:@"setting.png"];
    [navController3 setTitle:@"Einstellungen"];

    //create the navigation controller and use NavRootController as its root
    UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:navController3];
    viewsArray = [NSArray arrayWithObjects:nav0,nav,nav3, nil];
    UITabBarController *tabbarController = [[UITabBarController alloc] init];
    tabbarController.view.frame = CGRectMake(0,0,320,460);
    //then tell the tabbarcontroller to use our array of views
    [tabbarController setViewControllers:viewsArray];

    //then the last step is to add the our tabbarcontroller as subview of the window
    self.window.rootViewController = tabbarController;


}

-(void)Ipadpullnextview
{
    [self.viewController.view removeFromSuperview];
    [self.timer invalidate];
    self.timer = nil;
    NSArray *viewsArray;
    //create the first view controller

    SearchViewController *navController0 = [[SearchViewController alloc] initWithNibName:@"IpadSearchViewController" bundle:nil];

    navController0.tabBarItem.image = [UIImage imageNamed:@"search.png"];
    [navController0 setTitle:@"Neuen Termin buchen"];

    //create the navigation controller and use NavRootController as its root
    UINavigationController *nav0 = [[UINavigationController alloc] initWithRootViewController:navController0];
    UINavigationController *nav;
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    int uid = [standardUserDefaults integerForKey:@"dmloginid"];
    [standardUserDefaults synchronize];

    if(uid>0)
    {

        SearchViewController *navController = [[SearchViewController alloc] initWithNibName:@"IpadSearchViewController" bundle:nil];
        navController.tabBarItem.image = [UIImage imageNamed:@"appointment.png"];
        [navController setTitle:@"Meine Termine"];
        nav = [[UINavigationController alloc] initWithRootViewController:navController];

    }
    else
    {
        LoginViewController *navController = [[LoginViewController alloc] initWithNibName:@"IpadLoginViewController" bundle:nil];
        navController.tabBarItem.image = [UIImage imageNamed:@"appointment.png"];
        [navController setTitle:@"Meine Termine"];
        nav = [[UINavigationController alloc] initWithRootViewController:navController];

    }


    SettingsViewController *navController3 = [[SettingsViewController alloc] initWithNibName:@"IpadSettingsViewController" bundle:nil];
    navController3.tabBarItem.image = [UIImage imageNamed:@"setting.png"];
    [navController3 setTitle:@"Einstellungen"];

    //create the navigation controller and use NavRootController as its root
    UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:navController3];
    viewsArray = [NSArray arrayWithObjects:nav0,nav,nav3, nil];
    UITabBarController *tabbarController = [[UITabBarController alloc] init];
    tabbarController.view.frame = CGRectMake(0,0,320,460);
    //then tell the tabbarcontroller to use our array of views
    [tabbarController setViewControllers:viewsArray];

    //then the last step is to add the our tabbarcontroller as subview of the window
    self.window.rootViewController = tabbarController;


}

================================================ ====================================

我正在调用包含相同代码但 .xib 不同的两个不同函数。之后,当我去运行代码时,这个错误就来了。

================================================ ====================================

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "IpadSearchViewController" nib but the view outlet was not set.'

谁能帮帮我。我是本节的新手。

【问题讨论】:

    标签: iphone xcode xcode4 xcode4.2


    【解决方案1】:

    转到您的 iPad XIB 并通过右键单击视图连接视图插座,然后将视图的引用插座连接到文件所有者..它应该可以正常工作

    【讨论】:

    • 其中有一些问题。它没有连接。在空白视图中,我添加了一个视图。在那之后,我正在努力做你所说的。但它没有连接。
    • ok..似乎你没有指定 XIB 必须继承的类..首先单击文件的所有者,它应该显示 6 个检查器(XIB 的右侧)..选择第三个检查器,即“身份检查器”并将其类更改为“SearchViewController”..然后尝试前面提到的步骤..你很高兴:)
    • 在您的情况下,您可以输入“ViewController”或您希望为相应的 XIB 显示的任何其他控制器
    • 我这样做了,但应用程序正在从 Ipad 模拟器中退出。错误是,由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类不符合键委托的键值编码。” *** 首先抛出调用栈:
    • 尝试在身份检查器中添加另一个视图控制器名称,通常是类名,例如:“ViewController”或“LoginViewController”在您的情况下
    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多