#iphone #objective-c
#iPhone #objective-c
Вопрос:
Вопрос новичка Objective C. Я пытаюсь программно изменить представление из другого представления. Но мне удается активировать кнопку tab только в tabbarcontroller.
В моем viewDidLoad у меня есть условие, что если это не выполнено, загрузите вместо этого второе представление.
Есть ли какая-нибудь добрая душа, которая может помочь новичку Objective-C? Я погуглил и поискал stackoverflow для ответа, но безуспешно.
FirstViewController.h
@interface FirstViewController : UIViewController {
some variables
}
some @properties
FirstViewController.m
#import "FirstViewController.h"
@implementation FirstViewController
- (void)viewDidLoad
{
if(condition is met) {
[self.tabBarController setSelectedIndex:1];
}
}
В моем AppDelegate.h
#import <UIKit/UIKit.h>
@interface otpAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
UIWindow *window;
UITabBarController *tabBarController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
AppDelegate.m
@implementation otpAppDelegate
@synthesize window;
@synthesize tabBarController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];
tabBarController = [[UITabBarController alloc] init];
[tabBarController setDelegate:self];
return YES;
}
Редактировать!
Я нашел решение своей проблемы.
int selectedindex = 1;
self.tabBarController.selectedIndex = selectedindex;
UIViewController *tempvc = [[self.tabBarController viewControllers] objectAtIndex:selectedindex];
[self.view removeFromSuperview];
[self.view addSubview:tempvc.view];
Сделал свое дело.
Комментарии:
1. Эй, это не решение… Это просто обходной путь. Код, который вы добавили для обмена представлениями, должен выполняться tabbarcontroller… но вы сделали это в своем коде…
2. Я удалил [Решаемая] из названия. Не добавляйте такие метки, потому что это уменьшит количество альтернативных решений / ответов на ваш вопрос.
Ответ №1:
Попробуйте установить индекс для tabBarController
экземпляра делегата приложения, например yourAppDelegate.tabBarController
Комментарии:
1. Привет, спасибо за ваш ответ. Однако я не уверен, как это сделать 🙂 Можете объяснить немного больше и, возможно, привести пример кода?
Ответ №2:
Если вы используете TabBarController как IBOutlet, нет необходимости выделять его в делегате вашего приложения. Пожалуйста, удалите этот код из вашего метода AppDelegate (application: didFinishLaunchingWithOptions)..
tabBarController = [[UITabBarController alloc] init];
[tabBarController setDelegate:self];