如何在iOS中查找UIView子视图的值变化

Posted

技术标签:

【中文标题】如何在iOS中查找UIView子视图的值变化【英文标题】:How to find the value changes of subviews of UIView in iOS 【发布时间】:2017-05-23 09:05:22 【问题描述】:

我有一个 UIView,其中包含多个 UITextFields、UIButtons,我需要知道这些子视图中的任何一个值是否已更改。例如,在 UITextFields 的情况下,有一个类似 textFieldDidChange 的函数:(UITextField *)theTextField。如果任何 UITextFields 的文本有任何变化,此函数将通知我们。像,如果 UIVIew 中的任何子视图有值变化,有什么方法可以得到通知?请帮帮我。

【问题讨论】:

指定你需要观察哪种子视图?是自定义 UIView 类还是 UISwitch 或 UISlider 之类的? 像 UITextFields、UIButton 如果您想观察在该子视图中所做的所有更改,您可能必须指定类型并观察所有类型并委托回主视图,没有 1 行方法可以做这个 好的,谢谢@Tj3n 【参考方案1】:

您可以将 tag 用于按钮和文本字段,并使用标签轻松识别哪个文本字段的值已更改。例如,由于您的 textField 是 UIView 的子视图,您可以像这样从特定的 textField 检索文本。

NSString *text = ((UITextField*)[YourView viewWithTag:result]).text;

对于按钮,为 allButtons 维护一个 buttonAction 并使用标签抓取按钮点击。

- (IBAction)buttonClicked:(id)sender 
    if(sender.tag == 1) 
            //Do something.
          

【讨论】:

不不,实际上我需要知道任何子视图的值/状态是否已更改。例如,我有一个包含 UITextFields、UIButtons、UISwitch 等的视图,当更新该视图时,我需要在视图中是否进行任何更改。那就是更改任何 UITextFields 值或单击任何类似的按钮。

以上是关于如何在iOS中查找UIView子视图的值变化的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS SDK 中禁用 UIView/UIViewController 的“突出显示子视图”消息?

如何在iOS中的UIView子视图下方插入UILabel

如何在一行代码中将多个子视图添加到我的 iOS 视图中? (也许通过“monkeypatching”一个 `addSubviews` 实例方法到 UIView?)

如何在 iOS 中将 UIView 转换为 PDF?

如何在 iOS 中将 UIView 转换为 PDF?

如何在启用自动布局的情况下更改 iOS6 中的 UIView 大小?