基本上我遇到的问题是我无法从另一个名为Table的视图中调用主视图控制器(称为Recorder)中的方法。
当用户单击按钮时,表视图将从Recorder加载为Modalview控制器(presentmodalViewController)。表格视图允许我的用户从设置1更改为设置2并具有完成按钮(调用dismissmodalviewcontroller)并将用户返回到主视图(记录器)。
我想要的是在Table View上单击完成按钮时在Recorder中调用方法。此方法称为Changeview并更改设置。我目前无法正确调用此方法。
我目前的代码是:
changeView方法
- (void)changeView
{
[levelsView changeView];
}
TableViewController接口文件
RecorderViewController*recorderViewController;
@property (nonatomic, retain) RecorderViewController *recorderViewController;
TableViewController实施文件
@synthesize recorderViewController;
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[recorderViewController changeView];
}
按下完成按钮时调用的方法
- (IBAction) Switch: (id) sender {
[self dismissModalViewControllerAnimated:YES];
}
当前代码不会给我任何错误,但它也不会更改设置。我也试图设置通知没有运气。对此有何见解?
答案 0 :(得分:1)
在初始化tableViewController时是否设置了recorderViewController的值(即,您是否在Recorder类中设置了tableViewController.recorderViewController = self
)?如果没有,那么你对[recorderViewController changeView]
的调用正在向nil发送消息 - 这不会崩溃,但它也没有做任何事情。
顺便说一句,将TableViewController传递给RecorderViewController可能不是两个控制器进行通信的最佳方式:您可能需要考虑使用NSNotificationCenter,或者传递模型对象并使用{{3} }。