2011-08-11 69 views
1

所以我的應用程序中的Twitter/Facebook實現已經是一個學習的經驗,但我幾乎在那裏,我有最後一個,可能很簡單的問題。使用MGTwitter引擎,我打電話從我的視圖控制器的方法方法正在調用還沒有執行

- (void) setAccessToken: (OAServiceTicket *) ticket withData: (NSData *) data { 

該方法是關閉,(由NSLog調用確認)。但是,它並沒有做它應該做的事情,這在Twitter的註銷按鈕中淡化了。我仍然接觸Objective-C處理方法和所有的方式,我覺得我只是沒有將我的變量指向正確的位置。任何方向是非常讚賞,這裏是下面的代碼:

SA_OAuthTwitterEngine.m -

// 
// access token callback 
// when twitter sends us an access token this callback will fire 
// we store it in our ivar as well as writing it to the keychain 
// 
- (void) setAccessToken: (OAServiceTicket *) ticket withData: (NSData *) data { 
    if (!ticket.didSucceed || !data) return; 

    NSString *dataString = [[[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding] autorelease]; 
    if (!dataString) return; 

    if (self.pin.length && [dataString rangeOfString: @"oauth_verifier"].location == NSNotFound) dataString = [dataString stringByAppendingFormat: @"&oauth_verifier=%@", self.pin]; 

    NSString    *username = [self extractUsernameFromHTTPBody:dataString]; 

    if (username.length > 0) { 
     [self setUsername: username password: nil]; 
     if ([_delegate respondsToSelector: @selector(storeCachedTwitterOAuthData:forUsername:)]) [(id) _delegate storeCachedTwitterOAuthData: dataString forUsername: username]; 
    } 

    [_accessToken release]; 
    _accessToken = [[OAToken alloc] initWithHTTPResponseBody:dataString]; 
    //Call twit login from my view controller 
    MyView *fvController = [[MyView alloc] init]; 
    [MyView twitLogin]; 
    [MyView helper]; 
    NSLog(@"LETS TWEET DIRECTLY AFTER SUCCESSFUL LOG IN!"); 

} 

這是幫助我的方法是在我的.m文件做:

-(void)helper{ 
    NSLog(@"HELPER FUNCTION"); 
    [self fadeIn:twitterLogout withDuration:2 andWait:2.0]; 
} 

這是它正在調用的方法

//FADE IN FUNCTION ------------------------------////////////////////// 

-(void)fadeIn:(UIView*)viewToFadeIn withDuration:(NSTimeInterval)duration 
     andWait:(NSTimeInterval)wait 
{ 
    [UIView beginAnimations: @"Fade In" context:nil]; 
    [UIView setAnimationDelay:wait]; 
    [UIView setAnimationDuration:duration]; 
    viewToFadeIn.alpha = 1; 
    [UIView commitAnimations]; 

} 
+0

什麼是日誌,什麼不是? – Moshe

回答

1

在Objective-C,方法在以下兩種方式之一聲明「 方法。

這些行應改爲:

[MyView twitLogin]; 
[MyView helper]; 

試試這個:

[fvController twitLogin]; 
[fvController helper]; 

此外,您也可以打電話給你的輔助方法的委託返回一個值之前。您應該看看MGTwitterEngine是否包含委託。 (如果沒有,我會感到驚訝。)只有在登錄完成後,才應該使用可用的回調來調用方法。簡單地按順序調用這些方法將無法達到您想要的效果。

+0

非常感謝你的幫助,有一天,是我糾正了我的方法調用,並深入挖掘API和搜索更多教程,我發現如何打電話給MGTwitter的登錄成功委託,一切都完美。 :) 再次感謝! – Quintin

+0

不客氣! – Moshe

1

*這兩個日誌語句是否都打印?

* setAccessToken:withData:是否從主線程調用?嘗試從主線程調用fadeIn方法,即類似這樣的東西

- (void) helper{ 
    NSLog(@"HELPER FUNCTION"); 
    [self performSelectorOnMainThread:@selector(callFadeIn)]; 
}  
-(void)callFadeIn{ 
    [self fadeIn:twitterLogout withDuration:2 andWait:2.0]; 
} 

看看是否有幫助。有可能是從另一個線程調用了setAccessToken :(以及helper和fadeIn)。所有UI操作應該從主線程中發生。

- (returnType)methodName; 

+ (returnType) methodName; 

第一種類型是一個「實例」方法和第二類型是「類:

+0

謝謝你的幫助,這改正了我收到的其他一些警告,我感謝你的時間:) – Quintin

相關問題