Предупреждение. Попытайтесь представить, чей вид не находится в иерархии окон!
Да, я рассмотрел другие вопросы и ответы, прежде чем публиковать этот вопрос. Они не помогли мне решить эту проблему. Вот что я делаю. Я призываю мой singleton class socialHelper отображать лист действий, где метод postToFacebook
- это выбор. При нажатии на это действие появляется предупреждение выше, а postToFacebook
не отображается. Я вызываю это из UIViewController с UINavigationController
в качестве основного контроллера, а мой класс SocialHelper - NSOject
.
- (void)postToFacebook
{
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
slComposeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[slComposeViewController setInitialText:@"Building stairs? Checkout StairsPro on the app store!"];
[slComposeViewController addImage:[UIImage imageNamed:@"StairsIcon120x120.png"]];
[slComposeViewController addURL:[NSURL URLWithString:@"https://itunes.apple.com/us/app/stairs-pro/id477032819?ls=1&mt=8"]];
[self presentViewController:slComposeViewController animated:YES completion:nil];
// I've also tried this, which shows the post window, but after hitting cancel or post, my previous viewController is not the current viewController. So my navigation bar is gone and can't move around in my app.
// [[[[UIApplication sharedApplication]delegate]window]setRootViewController:slComposeViewController];
}else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"No Facebook Account" message:@"No Facebook account has been configured. You can configure or create a Facebook account in settings." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[alert show];
}
}
Так что я спрашиваю, что это лучший способ получить slComposerViewController
для отображения в этом случае, также как мы могли бы использовать опцию UIApplication
. Спасибо!