Закрыть детский взгляд от родителей - PullRequest
0 голосов
/ 21 апреля 2011

По какой-то причине, когда я закрываю свое дочернее представление, это вызывает ошибку с моим веб-обзором (в родительском представлении).Вызов, который я использую для закрытия дочернего представления: (я не знаю, является ли это правильным способом сделать это)

[normalSplashScreen_vc closeNormalSplashScreen];

Дает мне следующую ошибку:

Попытка получить веб-блокировку из потока, отличного от основного или веб-потока.Это может быть результатом обращения к UIKit из вторичного потока.Сбой сейчас ...

Я не могу понять, почему закрытие дочернего представления влияет на базовое веб-представление?

(Я думаю, что, вызывая функцию closeNormalSplashScreen, я закрываю главное представление, даже если оно вызывается в дочернем представлении - если это так, как мне решить эту проблему?)


Главный вид

@interface turfplusViewController : UIViewController {
    IBOutlet splashScreen *FirstRunsplashScreen_vc;
    IBOutlet NormalSplashScreen *normalSplashScreen_vc;
    IBOutlet UIWebView *Webview;
}

@property(nonatomic, retain) splashScreen *FirstRunsplashScreen_vc;
@property(nonatomic, retain) NormalSplashScreen *normalSplashScreen_vc;

// Obviously these functions are declared correctly but for the sake of space

 - (void) displayFirstRunSplashScreen { 
    [self presentModalViewController:FirstRunsplashScreen_vc animated:NO];
}

- (void) displayNormalSplashScreen {
    [self presentModalViewController:normalSplashScreen_vc animated:NO];
}

SplashScreen

Два экрана-заставки практически одинаковы (первый из них имеет индикатор выполнения).

@interface NormalSplashScreen : UIViewController {
    IBOutlet UIActivityIndicatorView *NormalActivityIndicator;
}

@property(nonatomic, retain) UIActivityIndicatorView *NormalActivityIndicator;

// Obviously these functions are declared correctly but for the sake of space

- (void) closeNormalSplashScreen {
    [self dismissModalViewControllerAnimated:YES];
}

Относится к этому и этому вопросу.(Второй не отвечает на вопрос ... это возможно?)

1 Ответ

1 голос
/ 21 апреля 2011

Эта ошибка обычно появляется, когда вы выполняете операцию пользовательского интерфейса из потока, который не является основным потоком.

Откуда вы вызываете метод closeNormalSplashScreen?Вызывается ли он из потока, отличного от основного потока?

Попробуйте сделать это и посмотрите, появляется ли ошибка по-прежнему

[normalSplashScreen_vc performSelectorOnMainThread:@selector(closeNormalSplashScreen) withObject:nil waitUntilDone:YES]; //last argument will change depending on your requirement
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...