是否可以在View Controller上更改某个类而不执行[ViewController alloc]init]
?
我有一个单独的类来计算几件事,我需要更改scrollView.contentInset
上的ViewController
以及其他一些内容。
编辑以获得更好的解释:我的ViewController
包含一个滚动视图,底部有一个文本字段。当用户点按该文本字段时,我需要更改contentInset
的{{1}}属性。我想使用单独的类来管理这一切(而不是必须在我的所有View控制器中执行此操作),因此我需要能够在当前正在查看的scrollView
上调用scrollView.contentInset
。
答案 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%确定这两个类之间的关系。