尝试使用ShareKit在Twitter上发帖时收到错误

问题描述:

我正尝试使用sharekit在Twitter和Facebook上发帖。尝试使用ShareKit在Twitter上发帖时收到错误

我有两个按钮,其致电以下两种方法:

- (IBAction) shareOnFacebook:(id)sender 
{ 
    // Create the item to share 
    NSString *someText = @"Share on Facebook."; 
    SHKItem *item = [SHKItem text:someText]; 

    // Share the item 
    [[SHK currentHelper] setRootViewController:self.navigationController]; 
    [SHKFacebook shareItem:item]; 
} 

- (IBAction) shareOnTwitter:(id)sender 
{ 
    // Create the item to share 
    NSString *someText = @"Share on Twitter."; 
    SHKItem *item = [SHKItem text:someText]; 

    //tried both methods to set navigationcontroller! 
    [[SHK currentHelper] setRootViewController:self.navigationController]; 
    [SHK setRootViewController:self.navigationController]; 

    [SHKTwitter shareItem:item]; 
} 

Facebook正在唯一的工作,当我尝试使用Twitter,我得到以下错误:

2011-05-31 10:20:25.928 App[870:707] *** Assertion failure in -[SHK showViewController:], /Users/blaat/Dropbox/App/Classes/ShareKit/Core/SHK.m:112 
2011-05-31 10:20:25.975 App[870: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].' 

这很奇怪,因为我使用Facebook的相同方法来设置NavigationViewController的一切工作... 我在SHKConfig.h中一遍又一遍地检查了所有变量

  • 认证的OAuth
  • 应用型 “浏览器”
  • 回调URL中填充的在配置和dev.twitter.com
  • Consumerkey OK
  • Consumersecret OK

任何一个理念?

编辑。我启用了对Sharekit的调试,这是结果。我仍然没有看到问题出在哪里。

2011-06-01 09:07:28.496 App[179:707] <0x2e9400 OAMutableURLRequest.m:(242)> OAMutableURLRequest parameters oauth_consumer_key=****************&oauth_nonce=9C826DA5-A991-4045-BA6C-96D62CF09AA0&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1306912048&oauth_version=1.0 
2011-06-01 09:07:30.109 App[179:707] <0x2e4240 SHKOAuthSharer.m:(108)> tokenRequestTicket Response Body: oauth_token=tsuRQUGI63sE7XnRyxiNgy4G03ycUG7G0KhEjhROuw&oauth_token_secret=jIsb6rqhqf11neREsIVrCnjy9i7epLhDKROmjgYJDmQ&oauth_callback_confirmed=true 
2011-06-01 09:07:30.578 App[179:707] *** Assertion failure in -[SHK showViewController:], /Users/blaat/Dropbox/App/Classes/ShareKit/Core/SHK.m:112 
2011-06-01 09:07:30.774 App[179: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].' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x33cd264f __exceptionPreprocess + 114 
    1 libobjc.A.dylib      0x34115c5d objc_exception_throw + 24 
    2 CoreFoundation      0x33cd2491 +[NSException raise:format:arguments:] + 68 
    3 Foundation       0x34be4573 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 62 
    4 App         0x0000bd5f -[SHK showViewController:] + 722 
    5 App         0x0000fe87 -[SHKOAuthSharer tokenAuthorize] + 238 
    6 App         0x0000fbb5 -[SHKOAuthSharer tokenRequestTicket:didFinishWithData:] + 396 
    7 CoreFoundation      0x33c42571 -[NSObject(NSObject) performSelector:withObject:withObject:] + 24 
    8 App         0x00015cb5 -[OAAsynchronousDataFetcher connectionDidFinishLoading:] + 208 
    9 Foundation       0x34ba02f5 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 68 
    10 Foundation       0x34ba0277 _NSURLConnectionDidFinishLoading + 78 
    11 CFNetwork       0x369ba411 _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE + 136 
    12 CFNetwork       0x369aef45 _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 100 
    13 CFNetwork       0x369af0cd _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 492 
    14 CFNetwork       0x369aee37 _ZN19URLConnectionClient13processEventsEv + 70 
    15 CFNetwork       0x369aede9 _ZN13URLConnection24multiplexerClientPerformEP18RunLoopMultiplexer + 36 
    16 CFNetwork       0x369aed5b _ZN17MultiplexerSource7performEv + 126 
    17 CFNetwork       0x369aecd9 _ZN17MultiplexerSource8_performEPv + 8 
    18 CoreFoundation      0x33ca9a79 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 12 
    19 CoreFoundation      0x33cab75f __CFRunLoopDoSources0 + 382 
    20 CoreFoundation      0x33cac4eb __CFRunLoopRun + 230 
    21 CoreFoundation      0x33c3cec3 CFRunLoopRunSpecific + 230 
    22 CoreFoundation      0x33c3cdcb CFRunLoopRunInMode + 58 
    23 GraphicsServices     0x347a541f GSEventRunModal + 114 
    24 GraphicsServices     0x347a54cb GSEventRun + 62 
    25 UIKit        0x33789d69 -[UIApplication _run] + 404 
    26 UIKit        0x33787807 UIApplicationMain + 670 
    27 App         0x000023af main + 70 
    28 App         0x00002364 start + 40 
) 

编辑:我得到了答案

[SHK setRootViewController:self.navigationController]; 

需求是:

[SHK setRootViewController:self]; 

的问题是,它需要一个UIViewController,当我传递一个UINavigationViewController

我们也使用ShareKit。我们还没有穿过这个,但根据docs online,ShareKit将尝试使用导航控制器堆栈来查找您的根视图控制器,然后从那里弹出一个模式视图控制器。它在找不到它时抛出这个错误。

[SHK setRootViewController:myViewController]; 
+0

我这样做只是我传递了一个UINavigationViewController而不是UIViewController – Slaapyhoofd 2011-06-07 09:23:54

编辑:

您可以通过使用以下调用手动设置根视图控制器纠正它,我得到了答案

[SHK setRootViewController:self.navigationController]; 

需求是:

[SHK setRootViewController:self]; 

问题是它需要一个UIViewController,而我传递一个UINavigationViewController ...