1

我有 2 个视图控制器。loginViewControl 设置为 rootViewControler :

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    loginViewControl = [[LoginTab alloc] init];
    self.window.rootViewController = loginViewControl;
    [self.window makeKeyAndVisible];

    return YES;
}

我创建了 StatusViewController : *.h

 @interface StatusViewController : UIViewController<UITabBarControllerDelegate>
{
    IBOutlet UITabBarController *tabBarController;

    IBOutlet UIButton *UploadButton;
    IBOutlet UIButton *ConvertorButton;
    IBOutlet UIButton *CompletedButton;
}
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end

现在我想从 loginViewControl(rootviewcontroller) 推送 StatusViewController。我使用了下面的代码,但它不起作用。

 - (IBAction)statusButtonClick:(id)sender;
{
    StatusViewController *statusView = [[StatusViewController alloc]init];
    [self.navigationController pushViewController:statusView animated:YES];

    [statusView release];   

}

你有什么建议吗?提前致谢

4

3 回答 3

0
- (IBAction)statusButtonClick:(id)sender; {

    // If used StoryBoard
    UIStoryboard *story=[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    StatusViewController *statusView = [story instantiateViewControllerWithIdentifier:@"StatusViewController"];
    [self.navigationController pushViewController:statusView animated:YES];

    // If used XIB
     StatusViewController *statusView = [[StatusViewController alloc]initWithNibName:@"StatusViewController" bundle:nil];
    [self.navigationController pushViewController:statusView animated:YES]; }
于 2013-08-09T08:11:15.290 回答
0

didFinishLaunchingWithOptions您没有在Window 的 RootViewcontroller 中设置 UINavigationViewcontroller ,我们不能UIViewController没有UINavigationViewcontroller

所以首先将 LoginViewController 设置为 RootViewController,UINavigationViewcontroller如下所示:-

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    loginViewControl = [[YourLoinViewcontroller alloc] initWithNibName:@"YourLoinViewcontroller" bundle:nil];
    UINavigationController *objNavigationController=[[UINavigationController alloc]initWithRootViewController:loginViewControl];

    self.window.rootViewController = objNavigationController;
    [self.window makeKeyAndVisible];

    return YES;
}

编辑

将您的StatusViewcontroller's视图与文件所有者连接起来,如下所示:-

在此处输入图像描述

你的推送方法是这样的: -

- (IBAction)statusButtonClick:(id)sender;
{
    StatusViewController *statusView = [[StatusViewController alloc]initWithNibName:@"StatusViewController" bundle:nil];
    [self.navigationController pushViewController:statusView animated:YES];

}
于 2013-08-09T07:52:43.777 回答
0

除非您的登录视图控制器是导航控制器,否则 statusButtonClick 中的 self.navigationController 将返回 nil,因此这将不起作用。也许你可以试试:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    loginViewControl = [[LoginTab alloc] init];
    self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:loginViewControl];
    [self.window makeKeyAndVisible];

    return YES;
}

这会将 loginViewController 包含在 navigationController 中,这将允许您将另一个 viewController 推送到 navigationController 的堆栈中。

于 2013-08-09T07:53:46.620 回答