我有一个 viewController,在其中我有一个视图,我可以在其中通过点击在 Paint 中进行绘制。在那个控制器中,我有一种清除屏幕的方法-
- (void) clearS
{
[(TouchTrackerView *)self.view clear];
}
现在,因为我不想用按钮占据我的屏幕,所以我在另一个屏幕上有按钮,可以将应用程序重置为起始位置,我希望它清除屏幕。该按钮属于不同的视图控制器,除此之外,我希望它调用我的绘图视图控制器并要求它清除屏幕。所以我有设置通知,就像在绘图视图控制器中这样:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(clearS) name:@"clearScreen" object: nil];
像这样在我的视图控制器中单击一个按钮:
[[NSNotificationCenter defaultCenter] postNotificationName:@"clearScreen" object: nil];
据我了解,当单击按钮时,会发布通知并调用方法。它崩溃了。
[(TouchTrackerView *)self.view clear]
据我了解,问题是在方法调用的那一刻,“self”变量是我的非绘图视图控制器,它试图对自身的视图执行清晰的方法,它缺乏并崩溃。
如何将方法发送到正确的视图控制器?我的想法有问题吗?也许可以用更好的方式来解决这个问题?
编辑: 我发现了问题,
[(TouchTrackerView *)self.view clear]
调用view是UIScrollView,不支持clear方法。所以我制作了一个包含正确视图的属性,并将其更改为
[(TouchTrackerView *)self.correctView clear]
它就像一个魅力。
我之所以选择通知,是因为它只有两行代码,而且我是初学者,我很难将我的头脑围绕在代表身上,所以我将保持原样,尤其是它可以工作。