在AlertView上单击更改ViewController

时间:2014-05-21 18:48:01

标签: ios objective-c ios7 uiviewcontroller

我正在使用标签式应用程序。

我有2个视图控制器:ViewControllerA,ViewControllerB。

ViewControllerA是一个标签栏控制器,ViewControllerB是一个常规的ViewController。

在ViewController A上,出现一个警报视图,当点击其中一个按钮时,它应该转到ViewControllerB:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
    if([title isEqualToString:@"Anything"])
   {
        ViewControllerB *controllerB = [self.storyboard istantiateViewControllerWithIdentifier:@"ViewControllerB"]
        [self presentViewController:controllerB animated:YES completion:nil];

    }
}

现在,在ViewControllerB上,它不是标签栏控制器,当我按下一个按钮时,它应该转到ViewControllerA,并且标签栏应该再次出现。 这是方法:

ViewControllerA *controllerA = [self.storyboard istantiateViewControllerWithIdentifier:@"ViewControllerA"];

[self presentViewController:controllerA animated:YES completion:nil];

问题是,当我按下ViewControllerB上的按钮时,它会将我带到Tab Bar Controller,它会切换到ViewControllerA,但Tab Bar不会出现。

所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

假设您的ViewControllerA已经拥有自己的导航控制器,一种简单的方法是实例化新的视图控制器并使用导航控制器将推送到堆栈中:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
    if ([title isEqualToString:@"Anything"]) {
        ViewControllerB *viewControllerB = [[ViewControllerB alloc] init];
        [self.navigationController pushViewController:viewControllerB animated:YES];
    }
}

答案 1 :(得分:0)

按下ViewControllerB上的按钮,您应该编写以下代码:

(void)buttonPressed
{
 [self dismissViewControllerAnimated:NO completion:nil];
}