0

我希望你能告诉我我做错了什么。另外,抱歉,我正在努力学习在问题中正确格式化代码。

一旦我知道它是如何工作的,我相信这将是直观的:-)

谢谢你。

我正在创建一个 iPhotos 风格的示例应用程序 - 一个在窗口底部有 4 个选项卡栏的应用程序,出现的第一个视图是 UITableViewController,它在每个选项卡的末尾都有那些方向箭头行/实例,用户可以单击其中任何一个并获取有关该实例的更多详细信息。第一个视图称为 ItemsViewController。它在标签栏中有一个与之关联的空白标签栏按钮,我可以返回到它。其他 3 个标签栏项目都是常规的 UIViewController,在我的示例中,它们每个都只是显示一个图像,这就是它们所做的一切(目前)。

我终于设法让所有 3 个 UIViewController 和一个 UITableViewController 存在并在同一个应用程序中工作。(万岁!)我可以让名称显示在不是表格视图控制器的 3 个选项卡栏项目中的每一个上。但我无法让 UITableViewController.m 在标签栏中的标签栏项目上显示名称。

.......这是我在应用程序委托方法中使用的代码......

`- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UITabBarController *tabBar = [[UITabBarController alloc] init];


ChairGarden* vc1 = [[ChairGarden alloc] init];

JSerra* vc2 = [[JSerra alloc] init];


Angel* vc3 = [[Angel alloc] init];

// Create aN ItemsViewController
  ItemsViewController *itemsViewController = [[ItemsViewController alloc] init];

// Create an instance of a UINavigationController
// its stack contains only itemsViewController
UINavigationController *vc4 = [[UINavigationController alloc]initWithRootViewController:itemsViewController];

   NSArray* controllers = [NSArray arrayWithObjects:vc4, vc1, vc2, vc3, nil];

   tabBar.viewControllers = controllers;

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

// Place navigation controller's view in the window hierarchy

[[self window] setRootViewController:tabBar];

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

`

..... 这是我在一个常规 UIViewController 中使用的一段代码,它指定了一个标签栏标题。我在标签栏上看到标题“椅子花园”,它显示了正确的图像。其他两个常规的工作方式相同

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // get tab bar item
        UITabBarItem *tbi = [self tabBarItem];
        [tbi setTitle:@"Chair Garden"];

    }
    return self;
}

......我试图为出现的第一个视图制作一个带有标题的标签栏项目 - 我的 UITableViewController 称为“ItemsViewController”,但它没有出现。我已经尝试将它放在 init 和 initWithNibName:bundle 中(我是否指定了该方法名称对吗?)(我也分别尝试过)。在这两种情况下,我的 NSLog 语句都显示我在那里,但选项卡上没有标题

@implementation ItemsViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        NSLog (@"Getting to initWithNibName in ItemsViewController");

        // get tab bar item
        UITabBarItem *tbi = [self tabBarItem];
        // This dosn't show up
        [tbi setTitle:@"Table View"];

    }
    return self;
}

- (id)init 
{
    // Call the superclass's designated initializer
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {
        NSLog (@"Getting to init in ItemsViewController");
        // get tab bar item
        UITabBarItem *tbi = [self tabBarItem];
        // This dosn't show up EITHER
        [tbi setTitle:@"HOME"];
4

2 回答 2

1

我不确定为什么这对于 UITableViewController 和 UIViewController 的工作方式不同(我能够复制您所看到的内容)。但是,您可以在 init 方法中设置表格视图控制器本身的标题,这将显示在标签栏项目上(默认情况下,标签栏项目显示控制器的标题)。

于 2013-02-27T04:52:32.260 回答
0

写 self.title=@"某个名字";

在 viewDidLoad 方法中而不是 initWithNibName

于 2013-11-07T01:47:14.703 回答