iphone - 以编程方式引用使用 Interface Builder 设置的对象

标签 iphone objective-c ios

我已经设置了几个 View ,每个 View 都包含一个 UIPickerView,每个 View 都包含一个 UIToolbar,每个 View 又都有一个 UIBarButtonItem。这一切都在IB中设置。我在代码中有指向 UIPickerViews 的指针。我需要将 UIBarButtonItems 引用为函数的一部分,该函数的行为取决于它处理的是哪个 UIPickerView。我将 (id) 发件人作为此函数的参数。发件人始终是 UIBarButtonItems 之一。我试图找到这个特定的 UIBarButtonItem 属于哪个 UIPickerView。我假设我必须启动 UIPickerView 层次结构并向下工作到 UIBarButtonItem。我认为这是正确的方法,因为我无法进行简单的比较,因为我没有明确引用 UIBarButtonItem 对象,因为它是在 IB 中设置的。此外,因为 subview 没有指向其父 View 的指针,所以我无法按照自己的方式返回层次结构。正确的?如果我在这一点上的想法是正确的,我是否:遍历每个 UIPickerView 中的 View 层次结构,找到一个 UIToolBar,然后找到一个 UIBarButtonItem?我到底在 UIToolBar 级别和 UIBarButtonItem 级别检查什么 - 我的意思是我是否执行 if 语句检查以查看对象分别是 UIToolBar 还是 UIBarButtonItem 类型?如何在 if 语句中找到对象的类型?

一个相关但更普遍的问题是,我是否应该在代码中设置这整个事情,以便我可以明确引用 UIBarButtonItem,我可以首先将 (id)sender 与它进行比较?

最佳答案

要弄清楚是哪一个,您需要做两件事:

一个。在代码中,添加 IBOutlet <object-type> <var-name>@interface .例如,如果你有一个用于“暂停”的 UIButton,你可以这样做

@interface blabla {
    ...
    IBOutlet UIButton btnPause;
}

两个。在 Interface Builder 中,按住 ctrl 从“File's Owner”拖动到按钮并选择“btnPause”。

在得到(id)sender的地方,然后你可以做例如

if (sender == btnPause) { ... }

关于iphone - 以编程方式引用使用 Interface Builder 设置的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535267/

相关文章:

iphone - uitextfield 中的光标位置

iphone - 如果 iphone 语言不是英语,uisearchDisplayController 不显示结果

ios - 应用程序删除锁 - swift

iphone - UIScrollView 重置 contentOffset

ios - 如何在共享扩展 View Controller 中获取标题?

ios - 如何向 UITabbar 添加图像?

ios - UIPageControl 中的 pageIndicatorTintColor 在 iOS7 中保持半透明白色

ios - 1 个屏幕包含 2 个 View Controller 的最佳方法

iphone - iOS facebook SDK - 对话框 - 移动按钮

iphone - 如何从数组中获取 url 并在表格 View 中显示图像