使用 xcode 4 在 ios 5 中创建选项卡式导航应用程序的问题

Posted

技术标签:

【中文标题】使用 xcode 4 在 ios 5 中创建选项卡式导航应用程序的问题【英文标题】:Issue in creating a tabbed navigation app in ios 5 with xcode 4 【发布时间】:2012-04-21 12:02:34 【问题描述】:

我正在尝试更改 xcode 4 上的选项卡式应用程序以合并没有情节提要的导航控制器。 第一个选项卡包含一个表格。这是需要导航的。

这里是 FirstViewController.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController <UITableViewDelegate,     UITableViewDataSource> 
IBOutlet UITableView *storeDetailsTable;


@property (nonatomic, retain) UITableView *storeDetailsTable;
@property (nonatomic, strong) NSDictionary *resultData;
@property (nonatomic, strong) NSMutableArray *populatedStoreArray;
@property (nonatomic, strong) NSMutableArray *images;


@end

这是 NavController.h:

 #import <UIKit/UIKit.h>

    @interface NavController : UINavigationController

    @property (nonatomic,retain) IBOutlet UINavigationController * navController;

    @end

所以,我将 NavController 用作 UIViewControllerSubclass,然后将其更改为上述内容。

AppDelegate.h:

#import <UIKit/UIKit.h>
@class NavController;

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate> 
    IBOutlet NavController *navController;


@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarController;
@property (strong, nonatomic) IBOutlet NavController *navController;

@end

和 AppDelegate.m:

#import "AppDelegate.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "NavController.h"

@implementation AppDelegate

@synthesize window = _window;
@synthesize tabBarController = _tabBarController;
@synthesize navController;

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

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    navController = [[NavController alloc] initWithNibName:@"NavController" bundle:nil];
//        UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController, viewController2, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;

现在,当我构建并运行它时,我看到了 2 个选项卡。但是第一个选项卡只是一个描绘导航控制器的空白黑屏,但没有应有的 tableview。

我错过了什么吗?

谢谢..

【问题讨论】:

【参考方案1】:

在您的代码中,我看不到您正在初始化 FirstViewController 类并让 NavController 知道它。 NavController 需要使用 RootViewController 进行初始化,例如:

NavController *myNavController = [[NavController alloc] initWithRootViewController:yourFirstViewController];

查找更多信息的好地方是: http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

【讨论】:

以上是关于使用 xcode 4 在 ios 5 中创建选项卡式导航应用程序的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 4.5 中创建 IOS 5.1 应用程序

XIB 在 iOS 4 中加载,但在 iOS 5 中不加载

如何在 html 中创建带有 4 个选项卡的菜单,该菜单将在一页上显示内容?

在 Xcode 4.3 中创建没有情节提要的项目

尺寸检查器中没有自动调整窗口大小的选项(XCode 4.5.2)

Xcode 5 - iOS - 如何在没有 Storyboard 或 XIB 的情况下在 Xcode 中创建视图控制器以及如何将其配置为 AppDelegate 作为根视图