Как получить UIViewController суперпредставления UIVIEW в iOS?

Диапазон портов RTP, используемый IBM Voice Agent, составляет 1024-65148.

24
задан Cœur 14 January 2019 в 02:09
поделиться

3 ответа

Вы не можете получить к нему доступ напрямую, но вы можете найти следующий контроллер представления (если есть), пройдя по цепочке респондента.

Вот как система Three20 делает это:

- (UIViewController*)viewController
{
    for (UIView* next = [self superview]; next; next = next.superview)
    {
        UIResponder* nextResponder = [next nextResponder];

        if ([nextResponder isKindOfClass:[UIViewController class]])
        {
            return (UIViewController*)nextResponder;
        }
    }

    return nil;
}
76
ответ дан Felixyz 28 November 2019 в 22:23
поделиться

Вы можете получить UIviewController из UIView

UIViewController *viewC = (UIViewController *)view->_viewDelegate;
-1
ответ дан Prabhjot Singh Gogana 28 November 2019 в 22:23
поделиться

Обратите внимание, что -webView:decidePolicyForNavigationAction:... является недокументированным методом (во всяком случае, для iPhoneOS. Для Mac OS X он документирован), и приложение, скорее всего, будет отклонено, если оно предназначено для AppStore.


Контроллер представления не связан с представлением. Действует только обратное. Чтобы получить доступ к контроллеру представления, сделайте его глобально доступной переменной или свойством.

Если обычно используется построитель интерфейсов, то можно определить выход в делегат приложения, который соединяется с навигационным контроллером представления. Тогда можно использовать

MyAppDelegate* del = [UIApplication sharedApplication].delegate;
[del.the_navigation_view_controller pushViewController:...];
1
ответ дан 28 November 2019 в 22:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: