类编辑视图控制器

时间:2011-12-13 19:23:59

标签: objective-c ios class uiviewcontroller

是否可以在View Controller上更改某个类而不执行[ViewController alloc]init]

我有一个单独的类来计算几件事,我需要更改scrollView.contentInset上的ViewController以及其他一些内容。

编辑以获得更好的解释:我的ViewController包含一个滚动视图,底部有一个文本字段。当用户点按该文本字段时,我需要更改contentInset的{​​{1}}属性。我想使用单独的类来管理这一切(而不是必须在我的所有View控制器中执行此操作),因此我需要能够在当前正在查看的scrollView上调用scrollView.contentInset

2 个答案:

答案 0 :(得分:0)

如果Mystery Object X需要对scrollview的引用以便它可以向它发送消息,那么你需要明确地提供该引用。在Mystery Object X的.h文件中,为scrollview声明一个@property。创建MOX时,请设置scrollview属性。现在MOX有它需要的参考。

答案 1 :(得分:0)

我想到了几种方法来解决这个问题:

一个。使用委托方法。 B. NSNotificationCenter。

如果您需要了解更多细节,请与我们联系。

按要求添加了代码:

使用NSNotificationCenter方法:

在具有scrollView的ViewController中添加一个观察者语句(可能在你的viewDidLoad方法中),并创建一个方法来更改你想要更改的scrollview的任何属性:

-(void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMethodToChangePropertyOfScrollview) name:@"ChangeScrollView" object:nil];
}

-(void)myMethodToChangePropertyOfScrollview
{
    //scrollView.contentInset = etc...
}

从你想要改变滚动视图的contentInset的任何类中,只需发布​​一个通知,如下所示:

[[NSNotificationCenter defaultCenter] postNotificationName:@"ChangeScrollView" object:nil];

要使用委托方法,您可以使用我之前对另一个SO post的答案中的类似示例。但在你的情况下,我并不是100%确定这两个类之间的关系。