我希望你能告诉我我做错了什么。此外,道歉,我正在努力学习如何在问题中正确格式化代码。
我确信一旦我知道它是如何工作的,这将是直观的: - )
谢谢。
我正在创建一个iPhotos风格的示例应用程序 - 一个在窗口底部有4个标签栏,第一个出现的视图是UITableViewController,它在那里提供了那些方向箭头。每个行/实例的结尾,用户可以单击它们中的任何一个,并获得有关该实例的更多详细信息。第一个视图称为ItemsViewController。它在标签栏中有一个空白的标签栏按钮,我可以返回它。其他3个标签栏项目都是常规的UIViewController,在我的示例中,它们每个都只显示一个图像,这就是他们所做的一切(现在)。
我终于设法让所有3个UIViewController和一个UITableViewController存在并在同一个应用程序中工作。 (万岁!)我可以在不表视图控制器的3个标签栏项目中显示名称。但我无法让UITableViewController.m在标签栏的标签栏项目上显示名称。
.......这是我在app delegate方法中使用的代码....
`- (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中使用的代码片段,它指定了一个标签栏标题。我在标签栏上看到标题'Chair Garden',它会显示正确的图像。另外两个常规的工作方式相同
- (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"];
答案 0 :(得分:1)
我不确定为什么这对UITableViewController和UIViewController有不同的作用(我能够复制你看到的内容)。但是,您可以在init方法中设置表视图控制器本身的标题,它将显示在选项卡栏项上(默认情况下,选项卡栏项显示控制器的标题)。
答案 1 :(得分:0)
写 self.title = @“some name”;
在viewDidLoad方法中而不是initWithNibName