在我们的应用程序中,我们使用 ShareKit 在 Facebook 和 Twitter 上发布内容。Facebook 运行良好,只是 Twitter 存在一些问题。
首次使用 Twitter 发送内容时,您需要对应用程序进行身份验证。此过程也只有在完成后才能正常工作,它应该返回屏幕以在 Twitter 上发布。但是此时应用程序崩溃了,因为它再也找不到 UIViewController 了……请参阅以下错误:
2011-06-22 17:18:29.355 asdf[189:707] *** Assertion failure in -[SHK showViewController:], /Users/nvt/Documents/asdf/Classes/Core/SHK.m:117
2011-06-22 17:18:29.460 asdf[189:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'ShareKit: Could not find a root view controller. You can assign one manually by calling [[SHK currentHelper] setRootViewController:YOURROOTVIEWCONTROLLER].'
但我确实设置了 UIViewController:
- (IBAction) shareAll:(id)sender
{
[SHK setRootViewController:self];
SHKItem *item = [SHKItem text:@"Deel app test"];
[SHK setFavorites:[NSArray arrayWithObjects:@"SHKTwitter", @"SHKFacebook",nil] forType:SHKShareTypeURL];
[SHK setFavorites:[NSArray arrayWithObjects:@"SHKTwitter", @"SHKFacebook",nil] forType:SHKShareTypeText];
SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];
actionSheet.title = @"Deel";
[actionSheet showInView:self.view];
}
似乎 Sharekit 不知何故失去了 UIViewController 上的句柄。我尝试通过添加来修复它:
[SHK setRootViewController:self];
到 ViewDidLoad 和 ViewWillAppear 方法,但这不起作用。任何遇到同样问题的人,或者有解决这个问题的想法?尽管应用程序崩溃了,但身份验证仍然有效,因为下次您想在 Twitter 上发布内容时,它确实有效。所以它只在第一次身份验证期间崩溃一次......
附言。将 OAuth 用于 Twitter
编辑: 向 Eimantas 回答 Thx
我必须做两件事来解决这个问题:
- 在 app delegate 中定义 [SHK setRootViewController:(the main rootviewcontroller)]
- 使用来自 github 的这个 fork https://github.com/rs/ShareKit/commit/2121cbc1a2d935b36921ae226449b2acd6f10c06#diff-0