2012-04-17 4 views
1

Я пытаюсь создать индикатор активности в своем приложении. Я использую раскадровку, и я создал кнопку, которая нажимает другое представление.iOS 5: Странное поведение addSubview

Вот как открыть другой вид:

- (IBAction)openView { 
    NSLog(@"View is loading"); 
    @try { 
     UINavigationController *nav = [storyboard instantiateViewControllerWithIdentifier:@"viewOpenSegue"]; 
     [nav setModalPresentationStyle:UIModalPresentationFullScreen]; 
     [self presentModalViewController:nav animated:YES]; 
    } 
    @catch (NSException *exception) { 
     NSLog(@"Error"); 
    } 
    @finally { 
     NSLog(@"View loaded"); 
    } 
} 

Everythings хорошо до сих пор. Я получил журнал до того, как открывается вид, и второй журнал после его полной загрузки.

Но когда я хочу использовать метод addSubview, у меня странное поведение.

NSArray *subviewArray2 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil]; 
loadingView = [subviewArray2 objectAtIndex:0]; 

Вот как я загружаю свой взгляд. И я добавляю/удаляю вот так:

[self.view addSubview:loadingView]; 
//@try block 
//@catch block 
//@finally 
{ 
[loadingView removeFromSuperview]; 
} 

Ожидается, что вид появится и исчезнет на экране. Но он появляется как 1 миллисекунда прямо перед нажатием вида, а затем исчезает внезапно.

Если я добавлю этот путь в viewDidLoad, он появится.

Я видел похожие вопросы, но они не помогли мне. Кто-нибудь знает? Должен ли я попробовать что-то еще?

Заранее спасибо.

+0

мне любопытно - почему вы используете @ попробовать/@ ловить блоки? – SomaMan

+0

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

ответ

0

Это потому, что я не использовал selector. Обратитесь к this question.

Вот оптимизированный код:

[self.view addSubview:loadingView]; 
[self performSelector:@selector(openView) withObject:nil afterDelay:0]; 
0

Имеет ли этот файл nib View.xib владельца файла?

+0

он делает. как я уже сказал, у меня нет проблем при загрузке под viewDidLoad ... – kubilay

0

Это происходит потому, что первый viewdidload выполняется, чем метод viewdidapper. viewdidappear load каждый раз, когда вы нажимаете или просматриваете представление, поэтому напишите свой код в viewdidload, если вы хотите выполнить его в первую очередь из своей загрузки.

+0

Я не хочу загружать первый раз, я хочу загрузить после нажатия кнопки. Поэтому я пишу код под - (IBAction) функцией openView. Он уже загружает первый раз, если я использую в viewDidLoad, он не загружается, если я попробую позже. – kubilay

+0

Что появляется в течение 1 миллисекунды справа перед тем, как появится толкаемый вид, затем исчезнет внезапно? – freelancer

+0

это не важно. проблема в том, что она не появляется, когда открывается новый вид. – kubilay

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