我想将我声明的属性绑定(bind)到在运行时创建的控件和 View ,这与使用 nib/xib 文件时发生的情况非常相似。
项目结构如下:
- plist 文件:用于设置 View 配置(按钮、标签、 TextView 等...)
- SOViewController:任何想要使用布局管理器的类都应继承该类。
- SOView:一个非常基本的 View ,包含在 plist 文件中定义的生成控件的字典
- SOLayoutManager:负责代表 SOViewController 子类创建 View 的单例。
每当自定义 viewController 继承自 SOViewController
时,一个带有 View 配置的 plist 文件就会从包中加载。 SOView
被创建,所有控件都被 SOLayoutManager
添加到 View 中(并且还可以通过作为 View 一部分的字典访问)。自定义 View Controller 应将属性与从 plist 文件生成的控件(属于 SOView
实例的控件)绑定(bind)。
我的问题如下:如何将自定义 View Controller 中包含的属性的 getter 和 setter 方法与 SOView
子类中生成的控件绑定(bind)?
最佳答案
与 xib 的做法相同...调用 setValue:forKey:
如果你有这样的东西
@interface MyViewController : SOViewController
@property (nonatomic, strong) UIButton *myButton;
// ...
@end
当 SOLayoutManager
创建 View 组件时,它会查看它是否有一个 outlet
并将其连接起来
MyViewController *viewController = // ...
// Create and configure the button
[viewController setValue:configuredButton forKey:@"myButton"];
您需要将 socket 的名称添加到 plist,以便它知道要设置什么
关于objective-c - 在 iOS 中动态更改属性 getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964916/