从UIViewController中转到另一个视图(UIViewController)

时间:2011-05-26 07:22:05

标签: iphone objective-c

新手目标C问题。我试图以编程方式从另一个视图更改视图。但我只是成功激活了tabbarcontroller中的tab键。

在我的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];

诀窍。

2 个答案:

答案 0 :(得分:0)

尝试设置应用代理tabBarController实例的索引,例如yourAppDelegate.tabBarController

答案 1 :(得分:0)

如果您使用tabBarController作为IBOutlet,则无需在您的app delegate中分配它。请从appDelegate方法中删除这些代码(application:didFinishLaunchingWithOptions)..

 tabBarController = [[UITabBarController alloc] init];
[tabBarController setDelegate:self];