Контроллер вкладок после показа одного контроллера просмотра - PullRequest
1 голос
/ 21 февраля 2012

Я хотел бы спросить, возможно ли показать tabbarcontroller после того, как я показал один контроллер представления.Я видел много учебников о tabbarcontroller, но все они были помещены в AppDelegate, используя следующую строку:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[self.window addSubview:tabController.view];
[self.window makeKeyAndVisible];
return YES;}

Что я хотел бы сделать, это сначала показать один контроллер представления:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{     
        self.window.rootViewController = self.viewController;
        [self.window makeKeyAndVisible];
        return YES; }

и после показа viewController пользователь должен будет нажать кнопку, чтобы показать другой вид с помощью TABBARCONTROLLER.Если это возможно, как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 21 февраля 2012

Да, вы можете ... в вашем первом контроллере, после того, как какое-то задание будет выполнено, нажмите контроллер табуляции.

Пример: -

Предполагая, что у вас есть класс TabBarController, подкласс UITabBarController.

- (void) doSomeJob
{
  if(true)
  {
     TabBarController *aTabBarController = [[TabBarController alloc] initWithNibName:@"TabBarController" bundle:nil];
     [self.navigationController pushViewController:aTabBarController animated:YES];
     [aTabBarController release];    
  }
}

EDITED панель пользовательских вкладок:

.h файл

@interface TabBarController : UITabBarController<UITabBarControllerDelegate,    UINavigationControllerDelegate> 
{
    UITabBarController *tabController;
    UINavigationController *1NavController;
    UINavigationController *2hNavController;
}

@property (nonatomic, retain) UITabBarController *tabController;
@property (nonatomic, retain) UINavigationController *1NavController;
@property (nonatomic, retain) UINavigationController *2hNavController;

.m файл:

- (void)viewDidLoad
{
[super viewDidLoad];    

tabController = [[UITabBarController alloc] init];
tabController.delegate = self;
tabController.tabBar.backgroundColor = [UIColor clearColor];

//Add some tabs to the controller...
1ViewController *1ViewController = [[1ViewController alloc] initWithNibName: @"1ViewController" bundle: nil];
1NavController = [[UINavigationController alloc] initWithRootViewController:1ViewController];
1NavController.tabBarItem = [[UITabBarItem1 alloc] init];

2ViewController *aSearchViewController = [[2ViewController alloc] initWithNibName: @"2ViewController" bundle: nil];
2NavController = [[UINavigationController alloc] initWithRootViewController:2ViewController];
2NavController.tabBarItem = [[UITabBarItem2 alloc] init];

tabController.viewControllers = [NSArray arrayWithObjects: 1NavController,2NavController,nil];

[self.view addSubview:tabController.view];
}

Также необходимо соответствующим образом реализовать методы делегата панели вкладок ....

0 голосов
/ 21 февраля 2012

Оставьте UITabBarController в качестве корневого контроллера вашего окна. Представьте свой другой контроллер представления как модальный контроллер представления. Отключите модальный контроллер вида, чтобы открыть контроллер панели вкладок.

0 голосов
/ 21 февраля 2012

У меня была ситуация с контроллером навигации и контроллером представления панели вкладок, но вам нужно с контроллером представления, поэтому я изменяю свой код в соответствии с вашими требованиями. Проверьте ответ сначала инициализируйте контроллер представления и контроллер панели вкладок в файле делегата приложения .h и дать свойство также как:

{
    IBOutlet FirstViewController * fvc;

    IBOutlet UITabBarController  *tabBarController;
}
@property (nonatomic, retain) IBOutlet FirstViewController * fvc;
@property (nonatomic, retain) IBOutlet UITabBarController  *tabBarController;

чем в .m файле установить контроллер представления на представление, так как вы хотите сначала установить простой контроллер представления, например:

fvc = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:[NSBundle mainBundle]];


[self.window addSubview: fvc.view];

Теперь в этом контроллере представления на конкретном событии, где вы хотите перейти к вкладке просмотра пользователя контроллера это:

    AppDelegate_iPhone *appDelegte_iPhone=(AppDelegate_iPhone*)[[UIApplication sharedApplication]delegate];                 
[[[appDelegte_iPhone viewController] view] removeFromSuperview];
[[appDelegte_iPhone window]addSubview:[[appDelegte_iPhone tabBarController]view]];  

  [[appDelegte_iPhone tabBarController]setSelectedIndex:0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...