0

我正在编写一个带有 UITableView 的程序,并在导航栏中添加按钮,这会导致编辑页面。当您单击表中的某个项目时,会推送一个包含与该项目相关的信息的视图 (rView)。此视图有一个编辑按钮,该按钮也可通向编辑页面。有没有一种方法可以让我在编辑页面上为完成按钮添加一个 if 语句,上面写着“如果 parentViewController 是要转到 rView 的 UITableView,否则是 popViewController?” 我会假设有一种方法可以做到这一点,但我不确定这样做的语法。谢谢

4

1 回答 1

1

如果我理解正确,你有一个 UINavigationController 并推上它

  1. 一个 UITableView
  2. 一个“rViewController”(你不能推送视图,必须是控制器)
  3. 一个“编辑控制器”

但也有可能省略第 2 步,直接进入编辑画面。

现在,当弹出最后一个控制器时,您希望能够始终转到“rViewController”,即使它不在堆栈上。

首先,parentViewController 不是堆栈上的前一个控制器,而是 UINavigationController 本身,所以它与现在的问题无关。

这样做的方法是使用 NSArray 显式设置 UINavigationController 的 viewControllers 属性。我没有尝试过,但这应该可以:

当用户按下“添加”按钮时,不仅仅是按下编辑视图控制器,还可以执行以下操作:

NSArray* stack = navigationController.viewControllers;
navigationController.viewControllers = [stack arrayByAddingObject:rViewController];
[navigationController pushViewController:editController animated:YES];

(顺便说一下,我建议不要使用像“rView”这样的名称,除非可能是非常短暂的局部变量,比如在循环中。使用描述性名称是 Cocoa 习语的一部分,从长远来看会对你有很大帮助跑。)

于 2009-12-06T19:21:51.983 回答