私は、TabBarControllerを含む詳細領域を持つSplitViewを持つUIを作成しようとしています。 TabBarControllerは、SplitViewのRootViewControllerで選択された項目の3種類の詳細を表示します。SplitViewController UIレイアウト
これまでのところ、私はSPlitViewを表示しているTabBarを次のようにしています。
1)SplitViewベースの新しいアプリを作成しました。
2)新しいTabBarベースのアプリケーションを作成
3)FirstViewとSecondViewコントローラの.xib、.h、.mファイルをTabBarアプリからSplitViewアプリにコピーします。
4)私のアプリケーションデリゲートヘッダーファイルに以下を追加しました。
@class RootViewController;
@class DetailViewController;
@class FirstViewController;
@class SecondViewController;
@interface SplitViewTemplateAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UISplitViewController *splitViewController;
UITabBarController *tabBarController;
RootViewController *rootViewController;
DetailViewController *detailViewController;
FirstViewController *firstViewController;
SecondViewController *secondViewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UISplitViewController *splitViewController;
@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@property (nonatomic, retain) IBOutlet FirstViewController *firstViewController;
@property (nonatomic, retain) IBOutlet SecondViewController *secondViewController;
5)はIBでMainWindow.xibを開いて、UITabController
6)にたDetailsView上のクラスを変更するには、私のアプリケーションデリゲートモジュールファイルに次のコードを追加しました。
#import "FirstViewController.h"
@synthesize window, splitViewController, rootViewController, detailViewController, tabBarController, firstViewController, secondViewController;
-(void) makeTabBarController {
NSMutableArray *controllers = [NSMutableArray arrayWithArray:splitViewController.viewControllers];
int index = 0;
for (UIViewController *controller in splitViewController.viewControllers) {
if (index == 1) {
//NSLog(@"Index is: %@", index);
//NSLog(@"Controller name is: %@", controller.title);
UINavigationController *localNavController;
tabBarController = [[UITabBarController alloc] init];
NSMutableArray *localViewControllersArray = [[NSMutableArray alloc] initWithCapacity:2];
firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstView" bundle:nil];
localNavController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
localNavController.tabBarItem.title = @"First Tab";
[firstViewController release];
[localViewControllersArray addObject:localNavController];
[localNavController release]; // Retained by above array
secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondView" bundle:nil];
localNavController = [[UINavigationController alloc] initWithRootViewController:secondViewController];
localNavController.tabBarItem.title = @"Second Tab";
[secondViewController release];
[localViewControllersArray addObject:localNavController];
[localNavController release]; // Retained by above array
tabBarController.viewControllers = localViewControllersArray;
[localViewControllersArray release]; // Retained thru above setter
//tabBarController.delegate = splitViewController;
[controllers replaceObjectAtIndex:index withObject:tabBarController];
}
index++;
}
splitViewController.viewControllers = controllers;
}
7)didFinishLaunchingWithOptionsメソッドに次を追加しました。
[self makeTabBarController];
ここでは、右側にタブバーコントローラが2つあり、すぐにSplitViewを見ることができます。タブは、ビューを切り替えるために機能します。
私が現在苦労していることはいくつかあります。
- Popoverを起動するボタンがありません。各タブビューにこれを追加する必要がありますか?
- RootViewControllerをTabBarControllerにフックして、選択した項目の詳細が表示されるようにするにはどうすればよいですか?
私のコードに何が起こったのですか?正しくフォーマットできます。 – sparkymark75
hmは、リストマークアップとコードマークアップに問題があるようです。私はコードがよく見えるようにそれを変更しました – vikingosegundo
ありがとう、あなたは私の質問に答えることができますか? ;) – sparkymark75