ios - 从其他类访问 UI 元素

标签 ios cocoa-touch

  1. ViewController 包含如下元素 UIPickerView 和两个 UITextField
  2. PickerViewController,其中实现了UIPickerViewDelegateUIPickerViewDataSource方法(didSelectRow, titleForRow,以及其他的)。

UIPickerView 中选择一个元素后,我需要更改其中一个 UITextField 的文本。我不能这样做,因为 didSelectRow: 是在 PickerViewController 中实现的,但是 UITextField 包含在 ViewController 中。我怎样才能获得访问权限?最重要的是,我怎样才能正确地做到这一点?

我应该在另一个类中实现选择器方法,还是将它们放在 ViewController 中?

最佳答案

how can I do that correctly?

这是一个比简单地让 PickerViewController 更改其父 View Controller 中的文本字段更好的问题,因为它确实不应该。

我想到了两种可能性:选择器 Controller 可以将某种消息直接传递回另一个 Controller ,或者它可以更新一个模型,另一个 Controller 在选择器 View 完成后从中读取。

第一个可能最容易实现的方法是为选择器 Controller 提供一个“选择后”处理程序 block ,该处理程序 block 将具有必要的数据作为参数,并且父 Controller 在另一个上定义和设置。在选择器 Controller 被关闭之前,它应该调用 block ,传递选择并执行其他 Controller 指定的任何操作。

第二个意味着父 Controller 和选择器 Controller 必须访问同一个数据对象。在不知道发生了什么的情况下,很难准确,但一个很好的可能性是父 Controller 实际上选择器 Controller 它应该从中读取的模型对象,而不是选择器 Controller 获取它自己。选择器 Controller 只是更改它传递的对象。

关于ios - 从其他类访问 UI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313256/

相关文章:

ios - 了解 NSRunLoop

iphone - 如何带来渐变外观 - IOS

ios - 带有 SearchBar 的 UITableViewController

ios - 如何在点击时更新静态 UITableView 中的 UILabel?

ios - 如何为 iOS 自定义 GMSAutocompleteViewController?

ios - TableView 项目应该加载另一个 TableView

ios - 在 Swift 中使用 arc4random_uniform 从数组中提取随机字符串

ios - 按住并释放按钮代码继续运行第一个动画完成 block

ios - 更改 UIImageView 的图像时淡入淡出/溶解

iphone - CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext)