如何使用一般代表(但也在Soundcloud中)。

时间:2011-07-29 11:22:56

标签: iphone objective-c xcode cocoa-touch delegates

对于代表来说,我是一个菜鸟,但我相信对于像你这样经验丰富的编码员来说,这将是一块蛋糕。

我的app app delegate设置如下:

@interface iPhoneTestAppAppDelegate : NSObject <UIApplicationDelegate, SCSoundCloudAPIAuthenticationDelegate> {
    UIWindow *window;
    iPhoneTestAppViewController *viewController;
    SCSoundCloudAPI *soundCloudAPIMaster;
}


- (SCSoundCloudAPI *)soundCloudAPIMaster;
{
    if (!soundCloudAPIMaster) {
        SCSoundCloudAPIConfiguration *scAPIConfig = [SCSoundCloudAPIConfiguration configurationForProductionWithConsumerKey:kTestAppConsumerKey
                                                                                                    consumerSecret:kTestAppConsumerSecret
                                                                                                                callbackURL:[NSURL URLWithString:kCallbackURL]];
        soundCloudAPIMaster = [[SCSoundCloudAPI alloc] initWithDelegate:nil authenticationDelegate:self apiConfiguration:scAPIConfig];
        // make shure to register the myapp url scheme to your app :) 
    }
    return soundCloudAPIMaster;
}

包含一个被回调的方法:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;

然后我在.h文件中设置了viewController:

@interface iPhoneTestAppViewController : UIViewController <SCSoundCloudAPIDelegate> 

然后在viewController.m中我有一个推动webview的方法。基本上我正在尝试做的是从委托文件获取回调方法以回调到viewController.m文件中的方法。 (我希望在收到回调时关闭我的webView。)

有什么想法吗?我是否提供了足够的信息来破译我的问题?这可以作为一般委托问题解决,还是更像是一个特定于Soundcloud的问题?

编辑1

以下是尝试修复无法解决的问题:

enter image description here

2 个答案:

答案 0 :(得分:0)

您需要将SoundClound变量的委托设置为self,否则变量无法取代委托人。

initWithDelegate:self ....

答案 1 :(得分:0)

只需在ViewDidload Event中编写此代码...

yourcontrolname.delegate = self;