ShareKit 模态视图控制器不会消失
Posted
技术标签:
【中文标题】ShareKit 模态视图控制器不会消失【英文标题】:ShareKit modal view controller won't go away 【发布时间】:2011-10-30 02:42:44 【问题描述】:我在 Xcode 4.2 (ios SDK 5) 上使用 ShareKit 0.2.1 在 Twitter 上共享文本。它共享良好,但模式视图控制器在单击取消按钮后成功共享后不会消失(见下文):
这是我的代码:
-(IBAction)shareOnTwitter:(id)sender
// Item to share
NSString *text = @"Go away, modal view controller!";
[SHKTwitter shareText:text];
我做错了什么?
【问题讨论】:
【参考方案1】:我和你有同样的问题。这是 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 上。
【讨论】:
这也是我实现的解决方案 y 它正在改变设备的方向【参考方案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];
【讨论】:
【参考方案3】:这是我在我的一个应用程序中使用的代码。 它可以很好地解雇。
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];
【讨论】:
如果你这样做 [NSString stringWithFormat:@"Tweet Text"];并删除 [twittertext release];线,它仍然被解雇吗?显然,唯一的区别是我使用的是 ARC...【参考方案4】:我在我的应用中使用了以下代码(禁用了 ARC)
NSString *text = @"Go away, modal view controller!";
[SHKTwitter shareText:text];
我可以确认它可以很好地解雇。 在尝试使 Sharekit ARC 兼容时,您可能更改了 SHKTwitterForm.m 中的一些代码。这导致了你的错误
【讨论】:
不,我刚刚编译了所有没有 ARC 的 ShareKit 文件:-fno-objc-arc 我刚刚重读了你原来的问题,发现有些困惑,你是如何使用 Xcode 4.3 的?另外,您遇到的错误是什么模拟器版本?你也在真机上测试过吗?以上是关于ShareKit 模态视图控制器不会消失的主要内容,如果未能解决你的问题,请参考以下文章
UISplitViewController 不会显示模态视图控制器