Сбой приложения после аутентификации Twitter с помощью Sharekit

В нашем приложении мы используем 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

Редактировать: Ответ Спасибо Эймантасу

Мне нужно было сделать две вещи, чтобы решить проблему:

  1. Определите [SHK setRootViewController:(основной rootviewcontroller)] в делегате приложения
  2. Используйте этот форк из github https://github.com/rs/ShareKit/commit/2121cbc1a2d935b36921ae226449b2acd6f10c06#diff-0

person Slaapyhoofd    schedule 23.06.2011    source источник
comment
AFAIK - это известная проблема, и ее можно найти в Google.   -  person Eimantas    schedule 23.06.2011
comment
Не могли бы вы дать ссылку? Потому что я искал и не могу найти решение. Вот почему я разместил вопрос здесь...   -  person Slaapyhoofd    schedule 23.06.2011
comment
getsharekit.com/support — в заголовке отсутствует корневой контроллер представления. Попробуйте установить корневой контроллер представления в делегате приложения (при добавлении начального контроллера представления в ваше окно).   -  person Eimantas    schedule 23.06.2011
comment
Также кажется, что этот github.com/ideashower/ShareKit/pull/129 содержит некоторые обновления. по вопросу. Я думаю, вам придется клонировать другой репозиторий ShareKit.)   -  person Eimantas    schedule 23.06.2011
comment
@Eimantas Спасибо, человек, который сделал свое дело! Я обновлю ответ!   -  person Slaapyhoofd    schedule 30.06.2011


Ответы (1)


Спасибо Эймантасу

Мне нужно было сделать две вещи, чтобы решить проблему:

  1. Определите [SHK setRootViewController:(основной rootviewcontroller)] в делегате приложения
  2. Используйте этот форк из github https://github.com/rs/ShareKit/commit/2121cbc1a2d935b36921ae226449b2acd6f10c06#diff-0
person Slaapyhoofd    schedule 30.06.2011