В нашем приложении мы используем ShareKit для публикации чего-либо на 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, но это не сработало. Кто-нибудь сталкивался с такой же проблемой или есть идеи, как это исправить? Хотя приложение дает сбой, аутентификация работает, потому что в следующий раз, когда вы захотите что-то опубликовать в Твиттере, она сработает. Так что сбой происходит только один раз при первой аутентификации...
пс. Использование OAuth для Twitter
Редактировать: Ответ Спасибо Эймантасу
Мне нужно было сделать две вещи, чтобы решить проблему:
- Определите [SHK setRootViewController:(основной rootviewcontroller)] в делегате приложения
- Используйте этот форк из github https://github.com/rs/ShareKit/commit/2121cbc1a2d935b36921ae226449b2acd6f10c06#diff-0