1

我对 iOS 开发非常陌生,如果这里的专家能够帮助我解决我的问题,我将不胜感激。目前,我的应用程序非常基础,并没有做太多事情。在尝试将标签栏添加到我现有的视图之前,一切正常。我不确定我错过了什么,但是当我运行模拟时没有显示任何内容。我会尽力解释我的应用程序的结构,以便你们更好地理解问题。

应用程序中当前存在以下内容...

  1. FeedList:嵌入在 UINavigationController 中的 UITableViewController。
  2. FeedCell:为 FeedList 创建的 UITableViewCell。
  3. FeedItemDetail:一个 UIViewController,里面有一个 UIScrollView。通过点击 FeedList 中的单元格,用户将被带到此屏幕。

下面是 AppDelegate.h 和 AppDelegate.m 的代码。如果有人能够告诉我为什么我的模拟屏幕上没有显示任何内容,我将不胜感激。谢谢!

    //AppDelegate.h
    #import <UIKit/UIKit.h>

    #import "FeedList.h"

    @interface AppDelegate : NSObject <UIApplicationDelegate>
    {
        UIWindow *window;
        FeedList *feedList;
        UITabBarController *tabBarController;
    }

    @property (nonatomic, retain) IBOutlet UIWindow *window;
    @property (nonatomic, retain) FeedList *feedList;
    @property (nonatomic, retain) UITabBarController *tabBarController;

    - (void)customizeAppearance;

    @end

    //AppDelegate.m
    #import "AppDelegate.h"

    @implementation AppDelegate

    @synthesize window, feedList, tabBarController;

    // Entry point
    - (void)applicationDidFinishLaunching:(UIApplication *)application
    {
        tabBarController = [[UITabBarController alloc] init];
        feedList = [[FeedList alloc] init];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:feedList];
        tabBarController.viewControllers = [NSArray arrayWithObject:nav];
        [window addSubview:tabBarController.view];
        [window makeKeyAndVisible];
    }

更新(问题已解决)

我意识到在添加线之后tabBarController.viewControllers = [NSArray arrayWithObject:nav];事情开始变得混乱。检查 Apple 的文档后,原因是如果在运行时更改此属性的值,标签栏控制器会在安装新视图控制器之前删除所有旧视图控制器。因此,我们需要将新的标签栏控制器设置为根视图控制器。

4

1 回答 1

0

我同意达斯汀的评论,如果你刚开始,你应该使用故事板。我认为您的方法有问题,或者与典型的不同,您没有将 tabBarController 添加为子视图,而是将 self.window 的 rootViewController 设置为如下所示:

// Entry point
    - (void)applicationDidFinishLaunching:(UIApplication *)application
    {
        tabBarController = [[UITabBarController alloc] init];
        feedList = [[FeedList alloc] init];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:feedList];
        tabBarController.viewControllers = [NSArray arrayWithObject:nav];
        //******* This is my correction *******
        window.rootViewController = tabBarController;
        //*******                       *******
        [window makeKeyAndVisible];
    }

当然,如果您的表格视图设置正确,则无法从您提供的信息中判断,因此不能保证这会显示您的表格。

于 2012-08-02T17:02:07.500 回答