15

我在Xcode 4.2(iOS SDK 5)上使用ShareKit 0.2.1在Twitter上共享文本。這股不錯,但模態視圖控制器不會消失後成功點擊取消按鈕後分享上(見下圖):ShareKit模式視圖控制器不會消失

enter image description here

這是我的代碼:

-(IBAction)shareOnTwitter:(id)sender{ 


    // Item to share 
    NSString *text = @"Go away, modal view controller!"; 

    [SHKTwitter shareText:text]; 

} 

什麼我做錯了嗎?

回答

30

我和你有同樣的問題。這是一個iOS 5問題。這是因爲ShareKit在UIViewController上使用了一種名爲parentViewController的方法,根據Apple文檔,您不能再在iOS 5中使用此方法。相反,您必須使用presentingViewController

因此,要解決它在ShareKit代碼,進入SHK.m,找到簽名(void)hideCurrentViewControllerAnimated:(BOOL)animated的方法,並將其替換爲:

- (void)hideCurrentViewControllerAnimated:(BOOL)animated 
{ 
    if (isDismissingView) 
     return; 

    if (currentView != nil) 
    { 
     // Dismiss the modal view 
     if ([currentView parentViewController] != nil) 
     { 
      self.isDismissingView = YES; 
      [[currentView parentViewController] dismissModalViewControllerAnimated:animated]; 
     } else if ([currentView presentingViewController] != nil) { 
      self.isDismissingView = YES; 
      [[currentView presentingViewController] dismissModalViewControllerAnimated:animated]; 
    } else 
     self.currentView = nil; 
    } 
} 

這對我的作品在iOS 5

+0

這是我實施的解決方案 –

+0

它正在改變設備的方向 – WaaleedKhan

1

這是我在其中一個應用中使用的代碼。 它解僱罰款。

NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/us/app/packager/id459511278?l=nl&ls=1&mt=8"]; 
NSString *twittertext = [[NSString alloc] initWithFormat: @"Tweet Text"]; 
SHKItem *item = [SHKItem URL:url twittertext]; 

// Share the item 
[SHKTwitter shareItem:item]; 
[twittertext release]; 
+0

如果你這樣做[NSString stringWithFormat:@「Tweet Text」];並刪除[twittertext release];線,它是否仍然解僱? 顯然唯一的區別是,我使用ARC ... – cfischer

1

我用下面的代碼在我的應用程序(ARC禁用)

NSString *text = @"Go away, modal view controller!"; 

[SHKTwitter shareText:text]; 

我可以證實它駁回罰款。 嘗試使Sharekit ARC兼容時,您可能更改了SHKTwitterForm.m中的某些代碼。導致你的錯誤

+0

不,我只是編譯所有沒有ARC的ShareKit文件:-fno-objc-arc – cfischer

+0

我剛剛重讀你的原始問題,發現一些混淆,你好嗎? '使用Xcode 4.3嗎?此外,你遇到什麼模擬器版本的錯誤?你是否也在真實設備上測試過它? – Louis

2
if (isDismissingView) 
    return; 

if (currentView != nil) 
{ 
    // Dismiss the modal view 
    if ([currentView parentViewController] != nil) 
    { 
     self.isDismissingView = YES; 
     [[currentView parentViewController] dismissModalViewControllerAnimated:animated]; 
    } 

    else { 
     //## ADD BELOW ## 
     self.isDismissingView = YES; 
     [currentView dismissModalViewControllerAnimated:animated]; 
     self.currentView = nil; 

    } 
} 
else { 
    [[self getTopViewController].navigationController popViewControllerAnimated:YES]; 
} 
相關問題