无法创建UINavigationController来推送一个VC

时间:2013-01-26 18:00:08

标签: objective-c xcode uiviewcontroller

我在XCode中遇到了一些琐碎但基本的概念。

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

相信我,我看了很多帖子,但似乎没有人能做到这一点。

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

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

所以这是我的app委托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

注意我正在创建一个名为navVC的自己的UINavigationController。

然后这是我的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 ...]没什么用。

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

任何帮助都会受到超级赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

如果您正在创建一个简单的练习应用程序,那么您正在使用核心数据做什么?

答案 1 :(得分:0)

我唯一能想到的是您的应用当前所需的UIWindow *window nil

你说你做了一个XIB:尝试将“window”和“NavigationController”出口关联到XIB中的正确控制器。

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