【问题标题】:Trouble creating UINavigationController to push just one VC创建 UINavigationController 以仅推送一个 VC 时遇到问题
【发布时间】:2013-01-27 04:59:05
【问题描述】:

我在 XCode 中诸如琐碎但基本的概念上遇到了麻烦。

我只是希望能够从头开始创建一个应用程序,并提供我的根视图控制器并推送和弹出一些 VC 以供练习。

相信我,我查看了大量帖子,但似乎没有一个可以解决问题。

所以我的步骤是,我创建了一个新的 xcode 项目,并创建了一个空应用程序。我想地狱,让我们在这里学习,而不是创建一个单一的视图应用程序。

我转到新文件,然后添加了一个 obj-c 类并用它创建了 XIB。我称它为 RootViewController。

这是我的应用委托 h 文件。

#import <UIKit/UIKit.h>
#import "RootViewController.h"

UINavigationController *navVC;

@interface VCTestAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (retain, nonatomic) UINavigationController *navVC;

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

@end

请注意,我正在创建自己的 UINavigationController,名为 navVC。

那么这里是我的 appledelegate m 文件的开头和相关部分...

#import "VCTestAppDelegate.h"

@implementation VCTestAppDelegate

@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
@synthesize navVC;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    UIViewController *VC1 = [[UIViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
    navVC = [[UINavigationController alloc]initWithRootViewController:VC1];


    [[self window] setRootViewController:navVC];
    [self.window makeKeyAndVisible];
    return YES;
}

我刚刚在那个根 VC 上创建了一个标签来验证它的显示。嗯,不。没有语法错误也没有崩溃,模拟器只是显示黑屏。我和我到底在做什么?然后,一旦我弄清楚这一点,我想练习推送和弹出视图控制器。

我不敢相信我无法弄清楚这一点。我最近发布了自己的应用程序,但使用了故事板。我现在想继续进行另一个项目,但我希望在不使用故事板的情况下获得更扎实的基础知识。我不想只限制 iOS 5 及更高版本的用户。

顺便说一句,我什至尝试启动一个单视图应用程序并添加一个 VC,当我单击我的按钮时,它“应该”;推第二个VC。我知道它的语法,但是当我测试我正在弄乱的另一个应用程序时,它会进入按钮的 IBAction 块,但它不会推动那个 VC....

我尝试了 [self navigationController] pushview... 我什至只尝试了 [navVC pushview...] 没有任何效果。

我不明白我错过了什么以及人们如何手动制作应用程序(在故事板之前以编程方式)。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: objective-c xcode uiviewcontroller


    【解决方案1】:

    您需要创建窗口。如果您查看空应用程序的默认代码,它将具有以下行:

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    

    如果您正在创建一个简单的练习应用程序,您将如何处理核心数据?

    【讨论】:

    • 不知道为什么我使用核心服务。感谢 self.window 来电。它似乎奏效了。现在我必须弄清楚如何在不轰炸我的情况下推动第二个 VC。
    【解决方案2】:

    我唯一能想到的是,你的应用目前需要的UIWindow *windownil

    您说您制作了 XIB:尝试将“window”和“NavigationController”插座与 XIB 中的正确控制器相关联。

    Control+click 从控制器到窗口视图。它应该为您提供单击“窗口”的选项。这应该将窗口与控制器相关联。尝试对 UINavigationController 的控制器和视图执行相同的操作。

    【讨论】:

    • 您好。我不确定你在看什么。在我的 rootviewcontrollers XIB 中,我看到的唯一引用出口是链接到文件所有者的视图。
    • 您的“主界面”是空白还是指向您的 XIB?此信息位于目标应用程序包的部署信息下。
    • 好的,我确实注意到它没有指向任何东西。所以我把它指向我的rootVC,但是当它出现时,它被这个错误炸毁了......***由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[ setValue:forUndefinedKey:]:这个类与键视图的键值编码不兼容。 *** 首先抛出调用栈:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2011-11-18
    相关资源
    最近更新 更多