如何从目标c类调用来查看iphone中的控制器类

时间:2012-12-05 19:49:52

标签: iphone objective-c

我正在从视图控制器类调用方法到目标c'dbhelper'类,反之亦然。当我从视图控制器类调用dbhelper类的方法时。像这样我已经在视图控制器中为按钮创建了一个方法,在这个方法中我正在调用像这样的dbhelper类

- (IBAction) clickme 
{
dbhelper *dbhelp = [[dbhelper alloc] init];
[dbhelp dbhelperclassmethod];
}

它工作正常但是当我从dbhelper类调用视图控制器类的方法然后方法调用不能像这样工作我在dbhelper类中创建了方法从那里我调用viewcontroller类方法就像这样

  -(void) disableview
    {
       ViewController *Controller = [[ViewController alloc] init];
        [Controller ViewControllerclassmethod];

  }

所以这个方法没有调用viewcontroller类方法,上面的代码不是orignal代码,但我为了你的理解编写了这段代码,以便你给我答案是什么问题。请告诉我为什么我不能从dbhelper类调用viewcontroller类谢谢

1 个答案:

答案 0 :(得分:2)

我认为您正在ViewController类中创建dbhelper的新实例,并将ViewControllerclassmethod发送到该新实例,而不是发送到您期望的实例。如果您希望dbhelper的实例调用ViewController实例中的方法,您可以从中调用dbhelper,那么您必须告诉dbhelper将消息发送到何处。类似的东西:

dbhelp.callingViewController = self;
在您的ViewController实例中

。然后dbhelper可以

[self.callingViewController ViewControllerclassmethod];

当然,在dbhelper.h中,必须有一个

@property (strong) ViewController * callingViewController;

您在Controller方法中引用的disableview是一个全新的ViewController,完全独立于调用dbhelper的原始ViewController。

另一个提示:关于在目标C中命名的约定实际上非常有用。您调用dbhelper的类最好称为DatabaseHelper(大写'D'),局部变量Controller最好称为controller。其他人,很快你就会发现更容易理解你的代码。同样地,disableViewviewControllerInstanceMethod(而不是类方法,这是完全不同的事情)。