我正在从视图控制器类调用方法到目标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类谢谢
答案 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
。其他人,很快你就会发现更容易理解你的代码。同样地,disableView
和viewControllerInstanceMethod
(而不是类方法,这是完全不同的事情)。