アプリの 1 か所にタブ バーを配置したいと考えています。そこから、他のView Controllerをロードできますが、それだけです。アプリケーション全体で使用したくありません。私が読んだすべての例は、タブバーコントローラーをウィンドウのルートビューコントローラーとして作成しています。
では、どうすればいいですか?ありがとうございました!
アプリの 1 か所にタブ バーを配置したいと考えています。そこから、他のView Controllerをロードできますが、それだけです。アプリケーション全体で使用したくありません。私が読んだすべての例は、タブバーコントローラーをウィンドウのルートビューコントローラーとして作成しています。
では、どうすればいいですか?ありがとうございました!
これはあなたを助けるかもしれません.View ControllerがHomeViewであり、タブバーコントローラーをプッシュしようとしていると考えてください.HomeViewは以下のビューにロードされています.
#import "AppDelegate.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
HomeView *homeview = [[HomeView alloc] initWithNibName:@"HomeView" bundle:nil];
UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:homeview];
self.window.rootViewController = navigation;
[self.window makeKeyAndVisible];
return YES;
}
@end
その場合、HomeView の .h、.m、および .xib ファイルは次のようになります。
HomeView.h 内
#import <UIKit/UIKit.h>
@interface HomeView : UIViewController
{
IBOutlet UITabBarController *tabBarController;
}
-(IBAction)loadTabBar:(id)sender;
@end
HomeView.m は次のとおりです。
@implementation HomeView
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
-(IBAction)loadTabBar:(id)sender
{
[self.navigationController pushViewController:tabBarController animated:YES];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
.xib ファイルは次のようになっている必要があります。
tabBarControllerIBOutlet
は、.xib ファイル上の UITabBarController に接続する必要があります。そして、という名前のUITabBarController
2 つのビュー コントローラーを使用します。さらに、HomeView は.FirstViewController
SecondViewController
UINavigationController
この回答で明確でない場合は、詳細な説明で更新します。上記は、XIBメソッドを使用してタブバーコントローラーをロードする方法です。
IBAction
HomeView.m ファイルの (button action) で何かを変更して、以下のようにコーディングすることでこれを行うことができます。
#import "HomeView.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
@implementation HomeView
-(IBAction)loadTabBar:(id)sender
{
FirstViewController *firstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:firstView, secondView, nil];
[self.navigationController pushViewController:tabBarController animated:YES];
}
@end
アプリデリゲートでtabBarを作成し、これを使用したいときにいつでも追加する必要があります
-(void)addTabBarController
{
AppDelegate *appdelegte =(AppDelegate*)[[UIApplication sharedApplication]delegate];
//[[[appdelegte navigationController] view]removeFromSuperview];
[[appdelegte window]addSubview:[[appdelegte tabcontroller]view]];
[[appdelegte tabcontroller]setSelectedIndex:0];
}