2010-04-15 4 views
0

Я создаю MKMapView в методе с именем "generateMap". Изнутри viewDidLoad, это работает:MKMapView не загружается при вызове NSThread?

[self generateMap]; 

, но это приводит к карте, чтобы быстро загрузить, а затем исчезают, оставляя лишь пустую серую сетку:

[NSThread detachNewThreadSelector:@selector(generateMap) toTarget:self withObject:nil]; 

Любые идеи, почему это может происходить, когда я звоню метод через поток?


я в конечном итоге делает это:

-(void)viewDidLoad { 
[NSThread detachNewThreadSelector:@selector(spinTheSpinner) toTarget:self withObject:nil]; 
[self performSelectorOnMainThread:@selector(generateMap) withObject:nil waitUntilDone:NO]; 
[super viewDidLoad]; 
} 

Это позволяет мне иметь кок (UIActivityIndicator) и загрузите MKMapView как я хочу. Я установил «waitUntilDone: No]», чтобы экран переключил MapView до его завершения с помощью generateMap. В противном случае мы не увидели бы счетчик и увидели бы пустой экран до тех пор, пока не будет произведена генерация.

+0

Спасибо за следующий вверх! –

ответ

0

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

Что происходит, когда вы пытаетесь запустить -generateMap в основной теме с помощью -performSelectorOnMainThread:withObject:waitUntilDone:?

Например:

[self performSelectorOnMainThread:@selector(generateMap) withObject:nil waitUntilDone:YES]; 
+0

Я установил ... waitUntilDone: NO]; поэтому экран не сидит там пустой. – Chris

0

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

 

[self performSelector:@selector(generateMap)]; 
 
+0

Или, просто, '[self generateMap];' –

+0

хорошо, оба работают, но я нахожу, что мой метод имеет меньше ошибок. – Flafla2

 Смежные вопросы

  • Нет связанных вопросов^_^