如何在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 视图中? (也许通过“monkeypatching”一个 `addSubviews` 实例方法到 UIView?)