私のアプリは、4 つの異なるナビゲーション コントローラーを制御する画面の下部にある UITabBarController で動作し、4 つのナビゲーション コントローラーのそれぞれが異なる UITableViewController を管理します。
-(BOOL) application: (UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
{
UITableViewController *TVC1 = [UITableViewController alloc] init];
UINavigationController *NC1 = [UINavigationController alloc] initWithRootViewController: TVC1];
NC1.navigationBar.barStyle = UIBarStyleDefault;
NC1.navigationBar.translucent = NO;
UITableViewController *TVC2 = [UITableViewController alloc] init];
UINavigationController *NC2 = [UINavigationController alloc] initWithRootViewController: TVC2];
NC2.navigationBar.barStyle = UIBarStyleDefault;
NC2.navigationBar.translucent = NO;
UITableViewController *TVC3 = [UITableViewController alloc] init];
UINavigationController *NC3 = [UINavigationController alloc] initWithRootViewController: TVC3];
NC3.navigationBar.barStyle = UIBarStyleDefault;
NC3.navigationBar.translucent = NO;
UITableViewController *TVC4 = [UITableViewController alloc] init];
UINavigationController *NC4 = [UINavigationController alloc] initWithRootViewController: TVC4];
NC4.navigationBar.barStyle = UIBarStyleDefault;
NC4.navigationBar.translucent = NO;
UITabBarController *tabBarController = [UITabBarController alloc] init];
NSArray *viewControllers = @[NC1, NC2,NC3,NC4];
tabBarController.viewControllers = viewControllers
[tabBarController.ViewControllers objectAtIndex:0] setTitle: @"1"];
[tabBarController.ViewControllers objectAtIndex:1] setTitle: @"2"];
[tabBarController.ViewControllers objectAtIndex:2] setTitle: @"3"];
[tabBarController.ViewControllers objectAtIndex:3] setTitle: @"4"];
self.window.rootViewController = tabBarController;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
iOS7 の問題は、私の tableViews が以下に該当することです。
1) 画面上部の UINavigationController/UINavigationUItem。2) 画面下部の UITabBar。
UINavigationControllers の各 1 つに対して、navigationBar.translucent プロパティを NO に設定する問題 #1 を解決しました。
NC1.navigationBar.translucent = NO;
NC2.navigationBar.translucent = NO;
NC3.navigationBar.translucent = NO;
NC4.navigationBar.translucent = NO;
問題 2 の解き方がわかりません。
15行を超えるテーブルがあり、UITableViewが表示されると一番下までスクロールすることが期待されるまで、私はそれに気づきませんでした。下のものは UITabBar の下にあります。
次のように構築されたより複雑な UIViewController (UINavigationController 内) でも同じ問題があります。
CustomTableHeader (UIView) UITableView CustomTableFooter (UIView)
すべての制約は完璧ですが、いくつかのビューでは、CustomTableFooter が UITabBarController の下にあることがわかりました。表示を維持するには、その高さを増やす必要があります。UIVIewController を構築するコードはまったく同じですが、bottomView が UITabBarController に該当する場合もあれば、NO に該当する場合もあるため、これは奇妙です。