Правильный способ обратиться к верхнему представлению UITabBarController для showFromTabBar - PullRequest
2 голосов
/ 20 мая 2011

Представитель основного приложения имеет UITabBarController с именем tabBarController (NewsUKDelegate.m)

Первая вкладка загружает UIViewController, который поворачивает, добавляет UITableView (FirstViewController.m)

UITableView загружает подкласс UIViewContкогда ячейка выбрана (StoryController.m)

Я загружаю таблицу действий общего доступа из Sharekit

NSURL *url = [NSURL URLWithString:link];
SHKItem *item = [SHKItem URL:url title:storyTitle];
SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];
[actionSheet showFromTabBar:rootView];
[actionSheet showFromTabBar:[self view]];

Это работает (иш), но таблица действий загружается сверху, что кажется неправильным, но важно то, что он жалуется на

incompatible Objective-C types 'struct UIView *', expected 'struct UITabBar *' 
when passing argument 1 of 'showFromTabBar:' from distinct Objective-C type

Я пытался дурачиться с

UIWindow *topWindow = [[UIApplication sharedApplication] keyWindow];

if (topWindow.windowLevel != UIWindowLevelNormal)
{
    NSArray *windows = [[UIApplication sharedApplication] windows];
    for(topWindow in windows)
    {
        if (topWindow.windowLevel == UIWindowLevelNormal)
            break;
    }
}

UIView *rootView = [[topWindow subviews] objectAtIndex:0];  
NSLog(@"Root view is: %@",rootView);

[actionSheet showFromTabBar:rootView];
    [actionSheet showFromTabBar:NewsUKDelegate.tabBarController];
    [actionSheet showFromTabBar:NewsUKDelegate.view];

Но я просто получаю сбои, как правильно обращаться к панели инструментов делегата основного приложения

Ответы [ 2 ]

7 голосов
/ 20 мая 2011

Используйте

[actionSheet showFromTabBar:self.tabBarController.tabBar];
0 голосов
/ 20 мая 2011
     ((myAppDelegate *)[UIApplication sharedApplication]).delegate.tabBar
...