为什么我的方法不能打电话?

时间:2015-05-20 06:23:36

标签: objective-c methods viewcontroller

您好我正在尝试从另一个类调用一个方法,但它无效。

这是我想要调用的方法," updateName"。

@interface Content1ViewController ()

@end

@implementation Content1ViewController

+ (void)updateName:(id)sender {
    NSLog(@"IT WORKED");
}

- (void)viewDidLoad {
    [super viewDidLoad];
}

@end

然后我尝试在另一个类的方法中调用它。

-(void)randomMethod {

[Content1ViewController updateName];

}

然后我在"更新名称"时收到错误因为它没有认识到这种方法?我跟着这个answer,它不适合我。我已经确定我已经将这些课程相互导入了。

有人可以告诉我为什么它不起作用?感谢。

4 个答案:

答案 0 :(得分:3)

确保在didFinishLaunchingWithOptions的头文件中声明方法,这将使其公开。此外,调用方法的签名与最初声明的方法不同。 UINavigationBar.appearance().tintColor = myColor let navigationController = UIApplication.sharedApplication().windows[0].rootViewController as! UINavigationController navigationController.navigationBar.barTintColor = myColor navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : myTextColor] navigationController.navigationBar.translucent = false navigationController.setNeedsStatusBarAppearanceUpdate() 期望参数为Content1ViewController,请确保将其传递给某个引用以调用正确的方法。

答案 1 :(得分:0)

这里updateName是一个将sender作为参数的方法。

[Content1ViewController updateName:SOME_SENDER_ID_INSTANCE]; //Should work. Because your method definition says it needs `id` as param.

答案 2 :(得分:0)

updateName有一个参数发送者,你在调用方法时没有传递它,因此你会收到错误

答案 3 :(得分:0)

您的声明与方法签名不匹配,即您需要致电:

[Content1ViewController updateName:SOMETHING_HERE];