Как представить контроллер представления SLCompose из класса NSObject

Вот мой код:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    SLComposeViewController *viewController  = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; //Tell him with what social platform to use it, e.g. facebook or twitter

    [viewController setInitialText:sQuotes];

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate.navController presentViewController:viewController animated:YES completion:nil];


    [viewController setCompletionHandler:^(SLComposeViewControllerResult result)
     {
         NSString *output;
         switch (result)
         {
             case SLComposeViewControllerResultCancelled:
                 output = @"Action Cancelled";
                 break;
             case SLComposeViewControllerResultDone:
             {
                 output = @"Post Successfull";

             }
                 break;
             default:
                 break;
         }

         [appDelegate.navController dismissViewControllerAnimated:YES completion:nil];
     }];
}

Но это показывает предупреждение

чей вид не находится в иерархии окон!


person Utkarsh 786    schedule 21.02.2014    source источник


Ответы (1)


Предупреждение довольно ясное. Вы пытаетесь представить модальное представление представлением, которое не находится в иерархии окон, что не сработает.

Попробуйте изменить это [appDelegate.navController presentViewController:viewController animated:YES completion:nil];

вместо этого что-то вроде этого:

[appDelegate.window.rootViewController presentViewController:viewController animated:YES completion:nil];

Это гарантирует, что текущий активный контроллер корневого представления вашего приложения будет тем, который представляет контроллер модального представления.

В зависимости от того, как построен ваш AppDelegate, вам может потребоваться добавить свойство или просто геттер для отображения переменной window во внешнем мире.

person Dima    schedule 21.02.2014