切换两个视图控制器,后退功能不起作用

时间:2014-07-04 07:56:13

标签: ios objective-c

我有两个视图控制器UserListViewUserProfileView! 在UserListView视图控制器中,我有一个切换到UserProfileView的按钮,这里是代码。

UserListView.m - 点击操作

- (IBAction)SettingClick:(id)sender
{
    UserList *UserProfile = [self.storyboard instantiateViewControllerWithIdentifier:@"UserProfileView"];
    [self presentViewController:UserProfile animated:YES completion:nil];
}

代码工作正常,当用户切换到配置文件(UserProfileView)时,关闭按钮返回UserListView,这里是代码。

UserProfileView.m - 关闭点击操作

- (IBAction)CloseClick:(id)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
    UserProfile *UseList = [self.storyboard instantiateViewControllerWithIdentifier:@"UserListView"];
    [self presentViewController:UseList animated:YES completion:nil];
}

在此代码中,我将使用[self dismissViewControllerAnimated:YES completion:nil];关闭UserProfileView视图控制器以降低ram使用率并且它可以正常工作。

但是,我关闭UserProfileView我想再次打开这个视图控制器,它不起作用,UserProfileView不再显示?

我使用xcode 5并为ios 7构建应用程序,请提供帮助。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,当您拨打SettingClick:时,您的应用会显示UserList。因此,当您解除其上方显示的视图控制器时,您应该返回UserList而无需再次显示它。所以你可以试试:

- (IBAction)CloseClick:(id)sender
{
   [self dismissViewControllerAnimated:YES completion:nil]; 
}

除非您最初提交UserList,否则这将有效。在这种情况下,UserList将被顶级控制器解雇。在这种情况下,您可以在解雇UserList后延迟第二次UserProfile,并且它应该有效。

在后一种情况下,我建议您使用导航控制器,而不是简单地像您一样简单地展示您的控制器。如你所见,它并不是真的很简单,你会陷入任何形式的捕获。当您一次只显示一个控制器时,呈现控制器可以正常工作。另一方面,如果您实例化UINavigationController,这将为您处理控制器的层次结构。

答案 1 :(得分:0)

使用此 -

- (IBAction)CloseClick:(id)sender
{
  [self.navigationController popViewControllerAnimated:YES];
 }  

当您点击与此操作相关联的按钮

时,这将返回到您之前的视图