一个接一个地呈现两个UIViewControllers

时间:2014-04-07 11:10:53

标签: ios objective-c uiviewcontroller xamarin presentviewcontroller

我是iOS开发的新手,我作为一项研究做的很少。

我有一个应用程序,在我启动它后,我显示MainViewController,但如果这是第一次启动此应用程序,我想使用{{1来显示Sub1ViewController(名称已组成) } presentViewController中调用的方法。

用户在MainViewController上输入一些数据后,我调用Sub1ViewController方法隐藏它。

困难的部分从这里开始 - 我不知道在dismissViewController被解雇时如何捕获事件,我也可以使用Sub1ViewController调用Sub2ViewController来呈现presentViewController。我正在收到消息,当我正在进行另一次出席或解雇时,我正试图提出意见。

PS:我正在使用Xamarin,但我也理解objective-c。

1 个答案:

答案 0 :(得分:0)

嗨,你可以试试这个

  [self dismissViewControllerAnimated:YES completion:^{
    //code to be executed with the dismissal is completed
   // for example, presenting a vc or performing a segue
}];

您可以在完成关闭一个视图控制器后编写代码

或 在解除方法延迟一段时间之后,您可以通过当前视图实现此目的

-(void)onDismisViewController{

[self performSelector:@selector(presentSecoundViecontoller) withObject:self afterDelay:1];

}

-(void)presentSecoundViecontoller
{

SecoundViewController *secoundVC = [[SecoundViewController alloc]    initWithNibName:@"secoundVC" bundle:nil];
[self.navigationController presentViewController:secoundVC animated:YES completion:NULL];

}

修改

尝试这个我尝试并且工作

在subviewcontroller1中创建一个委托方法并在mainviewcontroller中设置委托并在mainvie中实现方法并在此委托方法中显示subviewcontroller2其工作

试试这个,如果不让我知道会发布代码。

在subviewcontroller1.h文件上委托创建

@protocol st1Protocol <NSObject>
    - (void)presentViewController;
@end
@interface SubViewController1 : UIViewController
@property (nonatomic,assign) id <st1Protocol> delegate;
- (IBAction)dissmiss:(id)sender;

SubViewcontroller1.m文件 我在subviewcontroller1的按钮点击上放置了关闭视图你在你的解雇方法

中执行此操作
 - (IBAction)dissmiss:(id)sender {
    [self dismissViewControllerAnimated:YES completion:^{
    //code to be executed with the dismissal is completed
    // for example, presenting a vc or performing a segue
       [self.delegate presentViewController];
}];
}

现在在主视图控制器中实现此委托方法。 在.h文件中实现委托方法

    @interface StViewController : UIViewController<st1Protocol>

在mainviewcontroller.m文件视图didload

中设置委托
- (void)viewDidLoad
  {
      [super viewDidLoad];
      subViewcontroller1 *st1=[[subViewcontroller1  alloc]initWithNibName:@"subViewcontroller1" bundle:nil];
      st1.delegate=self;
      [self presentViewController:st1 animated:YES completion:nil];
  // Do any additional setup after loading the view from its nib.
 }

在主视图控制器中委托方法实现

 -(void)presentViewController{
     SubmViewcontroller2 *st2=[[SubmViewcontroller2 alloc]initWithNibName:@"St2ViewController" bundle:nil];
[self presentViewController:st2 animated:YES completion:nil];
}

希望这可以帮助您快乐编码。