我在 XCode 上的单一 View 应用程序有一个自定义 View ,其大小约为整个 iPhone 屏幕的一半。我已经实现了一个只能在自定义 View 内部使用的绘图工具。自定义 View 记录绘图工具移动的距离。只有一个 ViewController,我想在自定义 View 框架外部的标签中显示距离变量。我需要使用协议(protocol)和委托(delegate)来执行此操作吗?或者有更简单的方法吗?过去几天我一直在使用协议(protocol)和委托(delegate)方法进行测试,但没有取得任何进展。
最佳答案
首先在界面构建器中添加自定义 View 作为主视图 Controller View 的 subview ,同时添加标签。然后将标签和 View 的导出添加到 View Controller (我们分别称它们为distanceLabel和drawView)。
现在将 distanceDrawn 声明为自定义 View 的属性,并在移动工具时更新它以包含正确的数字。
然后在 View Controller viewDidLoad 中添加:
[drawView addObersver:self forKeyPath:@"distanceDrawn" options:NSKeyValueObservingOptionNew context:null]
同时添加到 Controller :
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([object isEqual:drawView]) {
id distance = change[NSKeyValueChangeNewKey]; //change to appropriate type
distanceLabel.text = [NSString stringWithFormat:@"%@", distance];
}
}
现在,每当您更改 distanceDrawn 时,都会调用此方法,并且名为“change”的字典将包含键 NSKeyValueChangeNewKey
新设置的值。如果检索到该值,则可以更新标签。
关于ios - 将数据从自定义 View 传递到 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17201539/