1

我在 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...] 没有任何效果。

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

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

4

2 回答 2

1

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

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

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

于 2013-01-26T20:59:05.897 回答
0

我唯一能想到的是UIWindow *window您的应用程序当前需要的是nil.

您说您制作了一个 XIB:尝试将“窗口”和“导航控制器”插座与 XIB 中的正确控制器相关联。

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

于 2013-01-26T18:43:48.513 回答