0

私が間違っていることを教えていただければ幸いです。また、申し訳ありませんが、質問でコードを正しくフォーマットするための学習に取り組んでいます。

それがどのように機能するかを知ったら、それは直感的になると確信しています:-)

ありがとうございました。

私は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"];
4

2 に答える 2

1

UITableViewController と UIViewController でこれが異なる理由がわかりません (あなたが見ているものを複製することができました)。ただし、init メソッドでテーブル ビュー コントローラー自体のタイトルを設定すると、それがタブ バー項目に表示されます (デフォルトでは、タブ バー項目にはコントローラーのタイトルが表示されます)。

于 2013-02-27T04:52:32.260 に答える
0

write self.title=@"ある名前";

initWithNibName の代わりに viewDidLoad メソッドで

于 2013-11-07T01:47:14.703 に答える