2015-07-17 2 views
0

Итак, у меня есть приложение iOS с одним видом. Внутри контроллера вида у меня есть метод, прикрепленный к кнопке в раскадровке. Вот метод, когда затем нажимается кнопка:Приключение iOS при отображении SLComposeViewController

- (IBAction)tweetButton:(id)sender { 
    if ([SLComposeViewController isAvailableForServiceType:@"SLServiceTypeTwitter"]) { 
    SLComposeViewController *tweetSheet = [[SLComposeViewController alloc] init]; 
    tweetSheet = [SLComposeViewController composeViewControllerForServiceType:@"SLServiceTypeTwitter"]; 

    [tweetSheet setInitialText:@"This is a test."]; 
    [self presentViewController:tweetSheet animated:YES completion:nil]; 
    } 
    else { 
    NSLog(@"Twitter not configured."); 
    } 
} 

Всякий раз, когда я нажимаю кнопку в приложении, я получаю аварии со следующей ошибкой:

2015-07-17 15:57:24.110 Now Playing[425:19583] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target <ViewController: 0x157e4c620>.'

Мой код следует в значительной степени каждый пример, который я видел в Интернете, поэтому я не уверен, что случилось.

+0

Используйте макропеременную для типа обслуживания, не трудно набрать их, заменить '@ "SLServiceTypeTwitter"' 'по SLServiceTypeTwitter' – tbaranes

+0

Duh! Это сработало. Спасибо. –

ответ

1

Вы не должны трудно ввести тип сервиса, даже если он принимает NSString, вы должны использовать один из константы вместо: SLServiceTypeTwitter, SLServiceTypeFacebook ...

Кроме того, composeViewControllerForServiceType: уже делать Alloc/инициализации шаги для вас, поэтому не нужно выделять его перед вызовом этого метода.

Код исправлен:

- (IBAction)tweetButton:(id)sender { 
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { 
     SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 

     [tweetSheet setInitialText:@"This is a test."]; 
     [self presentViewController:tweetSheet animated:YES completion:nil]; 
    } 
    else { 
     NSLog(@"Twitter not configured."); 
    } 
} 
Смежные вопросы