【问题标题】:going back to previous screen in iPhone在 iPhone 中返回上一个屏幕
【发布时间】:2011-12-12 10:58:55
【问题描述】:

我是 iPhone 开发的新手,我使用了基于视图的应用程序,其中我使用了导航控制器,单击自定义表格视图中的行后,它会显示一个导航控制器,其后退按钮的标题为前一屏幕的默认标题。

但在详细视图中,我创建了一个自定义后退按钮,单击该按钮后,我想返回上一个屏幕。

调用自定义按钮的代码是:

  [backBtn addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];

btnClicked 里面的代码是:

  [self dismissModalViewControllerAnimated:YES];

但我不会转到上一个屏幕。

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    如果您使用了navigationController,我猜您可能已经使用pushViewController: animated: 方法将视图推送到堆栈上。甚至可能是presentModalViewcontroller: animated:

    如果是第一种情况,那么在您的自定义后退按钮方法中您应该这样做

    [self.navigationController popViewControllerAnimated:YES];
    

    如果是第二种情况,那么它应该执行dismissModalViewControllerAnimated:,但请记住从用于呈现它的对象中解散。

    【讨论】:

    • 如果我按照 [self.navigationController.navigationBar addSubView:backBtn] 在导航控制器上创建另一个后退按钮,那么我应该在 backBtn Clicked 方法的定义中使用什么。我希望在转到上一个屏幕后不应该显示 backbtn
    • 尝试设置导航控制器的leftBarButtonItem,而不是向导航栏添加子视图。那是更好的方法
    【解决方案2】:

    使用这个:

        [self popViewControllerAnimated: YES];
    

    并确保您的 Viewwillappear 方法必须存在。

    【讨论】:

    • 如果我按照 [self.navigationController.navigationBar addSubView:backBtn] 在导航控制器上创建另一个后退按钮,那么我应该在 backBtn Clicked 方法的定义中使用什么
    • 如果你想打开/推送另一个视图你可以使用 [self.navigationController pushviewController:"Your View's Object Name" animated:yes];如果你想从任何视图返回然后使用 [Self popViewControllerAnimated:Yes];
    【解决方案3】:

    您可以使用此代码

     [[self parentViewController] dismissModalViewControllerAnimated:YES];
    

    【讨论】:

    • +1 这是答案,不知道为什么OP没有选择这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2023-03-22
    相关资源
    最近更新 更多