AppDelegate 和 .xib 未正确实施,但构建成功?
Posted
技术标签:
【中文标题】AppDelegate 和 .xib 未正确实施,但构建成功?【英文标题】:AppDelegate and .xib are not implementing properly, but build is successful? 【发布时间】:2013-03-07 15:03:07 【问题描述】:如果不粘贴我的所有代码,我真的不知道如何解释这一点,但我会试一试。 “假设”我的 .hs 和 .ms 是准确的,我感觉我的 .xib 设置不正确,但我不能真正粘贴代码。相反,我压缩了文件并上传了源代码。 (如果你足够勇敢,它就在这里:http://bit.ly/ZtDkGi)我得到了一个成功的构建,但我的模拟器的屏幕在应用程序启动后只是黑色的。
基本上,我必须手动添加一个 appDelegate 对象。我将课程设置为适当的课程 - 但它仍然没有拉动。如果有人愿意提供帮助,那就太好了。
这是我的 Test_TableViewAppDelegate.h
#import <UIKit/UIKit.h>
@interface Test_TableViewAppDelegate : NSObject <UIApplicationDelegate>
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@end
这是我的新 Test_TableViewAppDelegate.m
#import "Test_TableViewAppDelegate.h"
@implementation Test_TableViewAppDelegate
@synthesize window=_window;
@synthesize navController=_navController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
//self.window.backgroundColor = [UIColor whiteColor];
UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window.backgroundColor = [UIColor greenColor];
self.window = window;
UIViewController *fvc = [[UIViewController alloc] init];
UIViewController *rootController = [[UIViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:rootController];
//UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:fvc];
self.navController = nc;
//[self.window addSubview: nc.view];
//[self.window makeKeyAndVisible];
self.window.rootViewController = self.navController;
[self.window makeKeyAndVisible];
return YES;
RootViewController.h
#import <UIKit/UIKit.h>
@interface RootViewController : UITableViewController
NSMutableArray *petsArray;
@end
RootViewController.m
#import "RootViewController.h"
@interface RootViewController ()
@end
@implementation RootViewController
最后但并非最不重要的是 main.m(我认为这也可能是一个问题)
#import "Test_TableViewAppDelegate.h"
int main(int argc, char *argv[])
@autoreleasepool
return UIApplicationMain(argc, argv, nil, NSStringFromClass([Test_TableViewAppDelegate class]));
提前致谢。我会很感激的:D
【问题讨论】:
【参考方案1】:在您的代表Test_TableViewAppDelegate
为什么要向窗口添加两次视图?
// you could remove these two lines
[self.window addSubview: nc.view];
[self.window makeKeyAndVisible];
//keep these two lines
self.window.rootViewController = self.navController;
[self.window makeKeyAndVisible];
你添加到navigationController的这个视图没有用任何笔尖名称初始化
UIViewController *fvc = [[UIViewController alloc] init];
在你的委托中初始化应该是这样的
RootViewController *rootController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:rootController];
【讨论】:
好的,我删除了这两行。在我的导航控制器下仍然是一个绿色的 UIWindow。我不应该在那个绿色上看到 UITableView 吗? 你应该用你界面中的笔尖名称初始化UIViewController
看我的回答,你应该使用你在界面中创建的 ViewController
在哪个文件中? RootViewController.m?
如果您的 viewController 名称是 RootViewController 那么您应该在您的 Delegate 中声明它并使用它来添加到 navigationController【参考方案2】:
我认为您出现黑屏的原因是您没有正确分配和初始化导航控制器!
相反,您应该尝试以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
// create the base window
UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window.backgroundColor = [UIColor greenColor];
self.window = window;
[window release];
// this is the home page from the user's perspective
FirstViewController *fvc = [[FirstViewController alloc] init];
UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:fvc];
self.navigationController = nc;
[fvc release];
[nc release];
// show them
[self.window addSubview: nc.view];
[self.window makeKeyAndVisible];
return YES;
希望这行得通!
【讨论】:
好的......它把黑色变成了绿色......但我仍然看不到我的数组:) 至少我正在取得进展!有什么建议吗? 好的,我刚刚将您的代码添加到我的并在上面进行了编辑。我在导航栏下变绿了:D建议?再次,您可以下载我的整个源代码,如果可以的话,看看我做错了什么。它真的很小。谢谢!以上是关于AppDelegate 和 .xib 未正确实施,但构建成功?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 xib 的 appdelegate 中检查设备是 ipad 还是 iphone?
如何在 AppDelegate.cs 中使用带有插座的单独 XIB 的 UIViewController?出口始终为 NULL