如何将导航栏“完成”按钮添加到弹出窗口直通视图?

时间:2011-02-22 23:36:22

标签: cocoa-touch uinavigationbar uipopovercontroller

我正在使用iPad应用程序,该应用程序在详细视图中具有带导航控制器的拆分视图。可以在导航堆栈中的最深视图是用户可以编辑数据的编辑视图。我将一个编辑按钮作为rightBarButtonItem,当编辑开始时,将其更改为完成按钮。

当编辑开始并且用户触摸某个特定字段时,我会提供一个popoverview,其中列出了可能的选项列表,这些选项按照所键入的内容进行过滤 - 这是一种基于所有其他对象中该字段的所有值的自动填充形式。 / p>

除非您尝试触摸完成按钮,否则此工作正常。 popover吃了这个触摸并解散自己。因此用户必须再次触摸完成。

我尝试使用uipopovercontroller的passthroughViews属性,但是UIBarButtonItem不是视图,并且没有记录的方法来获取完成按钮甚至导航栏的视图。我可以访问gdb中的变量,但无法通过KVC访问它。

关于如何防止需要两次点击的任何想法?

我已经考虑过窗口上的手势识别器,但这看起来很乱,我必须处理旋转。

1 个答案:

答案 0 :(得分:1)

如果有人从谷歌来到这里,其他问题的copypaste:

我现在找到的唯一解决方案是使用

创建带有自定义UIButton的UIBarButtonItem
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
//code for styling button

UIBarButtonItem *b =  [[[UIBarButtonItem alloc]
                                         initWithCustomView:button]
                                         autorelease]

然后

popoverController.passthroughViews = [NSArray arrayWithObject:b.customView];

但要做好准备 - 你不能创建看起来像UIBarButtoItem的UIButton。我最终创建了重新组装UIBarButtonItem的图像。