iOS中动态更改属性的获取器和设置器

4
我想将我的已声明属性绑定到在运行时创建的控件和视图上,就像使用nib / xib文件时发生的情况一样。项目的结构如下:
- plist文件:用于设置视图配置(按钮、标签、文本视图等...) - SOViewController:一个类,应该被任何想要使用布局管理器的类继承。 - SOView:一个非常基本的视图,包含在plist文件中定义的生成控件的字典 - SOLayoutManager:一个单例,负责代表SOViewController子类创建视图。
每当自定义viewController继承SOViewController时,都会从bundle中加载带有视图配置的plist文件。创建一个SOView并通过SOLayoutManager将所有控件添加到视图中(也可以通过视图的字典访问这些控件)。自定义视图控制器应该将属性与从plist文件生成的控件(作为SOView实例的一部分的控件)绑定起来。
我的问题是:如何将我自定义视图控制器中包含的属性的getter和setter方法与在SOView子类中生成的控件绑定起来?
1个回答

4
同样的方式xib也是这样做的...调用setValue:forKey:
如果你有类似下面的代码:
@interface MyViewController : SOViewController

@property (nonatomic, strong) UIButton *myButton;

// ...

@end

SOLayoutManager 创建视图组件时,它会查看是否有 outlet 并连接它。
MyViewController *viewController = // ...

// Create and configure the button
[viewController setValue:configuredButton forKey:@"myButton"];

你需要将出口的名称添加到plist中,这样它才知道在哪里进行设置。

太好了,这么简单 - 我还以为我需要使用objc/runtime API进行一些C编码 :) - Wolfgang Schreurs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接