私が間違っていることを教えていただければ幸いです。また、申し訳ありませんが、質問でコードを正しくフォーマットするための学習に取り組んでいます。
それがどのように機能するかを知ったら、それは直感的になると確信しています:-)
ありがとうございました。
私はiPhotosのスタイルでサンプルアプリの作成に取り組んでいます-ウィンドウの下部に4つのタブバーがあり、表示される最初のビューがUITableViewControllerであり、それぞれの最後にそれらの方向矢印が表示されます行/インスタンス、ユーザーはそれらのいずれかをクリックして、そのインスタンスの詳細を取得できます。その最初のビューは ItemsViewController と呼ばれます。タブバーには空白のタブバーボタンが関連付けられており、そこに戻ることができます。他の 3 つのタブ バー アイテムはすべて通常の UIViewController のものです。私のサンプルでは、それぞれが画像を表示するだけで、それがすべてです (今のところ)。
最終的に、3 つの UIViewController すべてと 1 つの 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 の 1 つで使用するコードのスニペットです。タブ バーに「Chair Garden」というタイトルが表示され、右の画像が表示されます。他の2つの通常のものは同じように機能します
- (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"];