2011-02-02 15 views
0

私のアプリにはUITabBarControllerがあります。その中で、タブの1つはUINavigationControllerを含むUIViewControllerです。その中にはUITableViewControllerがあります。UITabBarViewController内のUINavigationController内でUITableViewのサイズを変更するにはどうすればよいですか?

問題は、何らかの理由でTableViewのサイズがオフで、テーブルの下部エントリの一部がTabBarによって覆い隠されていることです。私はテーブルビューのサイズを変更するために考えられるすべてを試しましたが、無駄です。ここでは、コードの関連部分です:

AppDelegate

tabBarController = [[UITabBarController alloc] init]; 

LogbookViewController *firstVC = [[LogbookViewController alloc] init]; 
PaceCalcViewController *secondVC = [[PaceCalcViewController alloc] init]; 
SettingsTableViewController *thirdVC = [[SettingsTableViewController alloc] init]; 

... 

// Add them as children of the tab bar controller 
tabBarController.viewControllers = [NSArray arrayWithObjects: firstVC, secondVC, thirdVC, nil]; 

LogbookViewController(のUIViewControllerのサブクラス)

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    navigationController = [[UINavigationController alloc] init]; 
    [self.view addSubview:navigationController.view]; 

    WorkoutListTableViewController *listController = [[WorkoutListTableViewController alloc] init]; 

    listController.managedObjectContext = self.managedObjectContext; 

    [navigationController pushViewController:listController animated:NO]; 
    [listController release]; 
} 

WorkoutListTableViewController(のUITableViewControllerのサブクラス)は、現在では特に何もありません。それは私がそれに影響を与えると思いますが、ここではViewDidLoadです:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.title = @"Workouts"; 

    self.navigationItem.leftBarButtonItem = self.editButtonItem; 

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"List" style:UIBarButtonItemStyleBordered target:nil action:nil]; 

    self.navigationItem.backBarButtonItem = backButton; 

    NSString *paths = [[NSBundle mainBundle] resourcePath]; 
    NSString *fileName = @"short_bg.png"; 
    NSString *filePath = [paths stringByAppendingPathComponent:fileName]; 
    UIImage *paper = [[UIImage alloc] initWithContentsOfFile:filePath]; 
    UIImageView *paper_bg = [[UIImageView alloc] initWithImage:paper]; 

    self.tableView.backgroundView = paper_bg; 

    [fileName release]; 
    [paper release]; 

    //self.navigationItem.leftBarButtonItem = self.editButtonItem; 

    UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(add:)]; 
    self.navigationItem.rightBarButtonItem = addButtonItem; 
    [addButtonItem release]; 

    /*UIBarButtonItem *importButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Import" style:UIBarButtonItemStylePlain target:self action:@selector(importDialogAction:)]; 
    self.navigationItem.leftBarButtonItem = importButtonItem; 
    [importButtonItem release];*/ 
    }  
} 

私はLogControlControllerでlistController.view.frame = CGRectMake(何でも)、またはWorkoutListTableViewControllerでself.tableView.frame - CGRectMake(何でも)を試しましたが、何も動いていません。何か案は?それが役に立ったら、もっとコードを投稿することができます。

答えて

0

あなたは適切に、それはすべき大きさ、UITabBarControllerに直接ナビゲーションコントローラを追加する必要があります。

tabBarController = [[UITabBarController alloc] init]; 
WorkoutListTableViewController *listController = [[WorkoutListTableViewController alloc] init]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:listController]; 

PaceCalcViewController *secondVC = [[PaceCalcViewController alloc] init]; 
SettingsTableViewController *thirdVC = [[SettingsTableViewController alloc] init]; 

... 

// Add them as children of the tab bar controller 
tabBarController.viewControllers = [NSArray arrayWithObjects: navController, secondVC, thirdVC, nil]; 

あなたは、ビューにUINavigationControllerを追加するために第一タブでビューコントローラを必要としません次に、TableViewControllerをnavコントローラのルートとして追加し、navコントローラを最初のタブに追加します。

+0

問題は、タブのタイトルとナビゲーションバーのタイトルが異なるようにすることです。別々に定義する方法はありますか?また、別のビューコントローラを作成した理由の一部は、モーダルビューが表示されているときにタブバーが表示されたままになるように、テーブルの上に表示するモーダルビューコントローラがあるためです。特別なサブビューなしでこれを行う別の方法はありますか? –

関連する問題