Viewcontroller类方法没有调用

时间:2015-05-30 10:11:10

标签: ios objective-c

你好我想通过watchKit播放。我设置了所有的东西。但是当我醒来时,来自watchKit的父应用按钮按下它醒来但是从playerController类我有一个方法来播放诗。但是这个方法没有被调用,我的代码在appdelegate下面。

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo))reply {


NSString *str=[userInfo objectForKey:@"counterValue"];
//reply(@{@"one":@"string"});

PlayerController *vc=[[PlayerController alloc] init];

if ([vc isKindOfClass:[PlayerController class]]){
    if ([str isEqualToString:@"1"]) {
        [vc playpoems];
        NSString *theee=@"12345";
        reply(@{@"one":theee});
    }

}
}

在这段代码中我得到了来自回复块的Log,但是只有类中的方法没有调用...这个方法在课堂上正常工作。

1 个答案:

答案 0 :(得分:0)

您正在appdelegate中创建一个新的viewcontroller实例。 请按照我的说法尝试使用此代码。

你的.m文件中的

@implementation PlayerController

PlayerController *selfvc;

+(PlayerController *)getInstance{
    return selfvc;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    selfvc =self;
}

并在您的标头文件中

@interface PlayerController : UIViewController


+(PlayerController *)getInstance;

@end

然后在您的appdelegate中尝试使用此代码

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo))reply {


NSString *str=[userInfo objectForKey:@"counterValue"];
//reply(@{@"one":@"string"});

PlayerController *vc=[PlayerController getInstance];


if ([vc isKindOfClass:[PlayerController class]]){
    if ([str isEqualToString:@"1"]) {
        [vc playpoems];
        NSString *theee=@"12345";
        reply(@{@"one":theee});
    }

}
}

然后将调用您的控制器函数。