在iOS中动态更改属性getter和setter

时间:2012-04-01 13:55:26

标签: objective-c ios properties runtime bind

我想将我声明的属性绑定到在运行时创建的控件和视图,这与使用nib / xib文件时的方式非常相似。

项目结构如下:

  • plist文件用于设置视图配置(按钮,标签,文字视图等)
  • SOViewController:一个应该由任何想要使用布局管理器的类继承的类
  • SOView:包含plist文件中定义的生成控件字典的基本视图
  • SOLayoutManager:负责代表SOViewController子类创建视图的单件。

每当自定义viewController继承自SOViewController时,都会从包中加载具有视图配置的plist文件。 SOView创建SOLayoutManager,并且SOView将所有控件添加到视图中(并且也可以通过视图的一部分字典访问)。自定义视图控制器应该将属性与plist文件生成的控件绑定(属于SOView实例的控件)。

我的问题如下:如何将自定义视图控制器中包含的属性的getter和setter方法与{{1}}子类中生成的控件绑定?

1 个答案:

答案 0 :(得分: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中,以便它知道在

上设置它的内容