如何在解除控制器时调用另一个视图中的方法

时间:2011-04-22 22:25:56

标签: iphone objective-c xcode uiview methods

基本上我遇到的问题是我无法从另一个名为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];

}

当前代码不会给我任何错误,但它也不会更改设置。我也试图设置通知没有运气。对此有何见解?

1 个答案:

答案 0 :(得分:1)

在初始化tableViewController时是否设置了recorderViewController的值(即,您是否在Recorder类中设置了tableViewController.recorderViewController = self)?如果没有,那么你对[recorderViewController changeView]的调用正在向nil发送消息 - 这不会崩溃,但它也没有做任何事情。

顺便说一句,将TableViewController传递给RecorderViewController可能不是两个控制器进行通信的最佳方式:您可能需要考虑使用NSNotificationCenter,或者传递模型对象并使用{{3} }。