我在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 ...]没什么用。
我不明白我错过了什么以及人们如何手动制作应用程序(在故事板之前以编程方式)。
任何帮助都会受到超级赞赏。谢谢!
答案 0 :(得分:1)
您需要创建窗口。如果您查看空应用程序的默认代码,它将具有以下行:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
如果您正在创建一个简单的练习应用程序,那么您正在使用核心数据做什么?
答案 1 :(得分:0)
我唯一能想到的是您的应用当前所需的UIWindow *window
nil
。
你说你做了一个XIB:尝试将“window”和“NavigationController”出口关联到XIB中的正确控制器。
控制+从控制器点击到窗口视图。它应该为您提供单击“窗口”的选项。这应该将窗口与控制器相关联。尝试使用UINavigationController的控制器和视图执行相同操作。