Программно созданные ярлыки и изображения не отображаются на экране - PullRequest
0 голосов
/ 23 марта 2011

У меня есть следующее приложение, похожее на чат, поэтому я программно создаю некоторые ярлыки, изображения и кнопки.
Проблема в том, что те, которые я добавляю при запуске, показывают, а те, которые я добавляю позже, - нет.
Это как представление нуждается в обновлении или что-то. Если я вызываю ту же функцию рисования из IBAction, установленного для кнопки ... она отображает содержимое ... если это происходит из события потока, которое ищет новые события и уведомляет класс через:

[[NSNotificationCenter defaultCenter] postNotificationName:@"NewMessageNotification" object:self userInfo:values];  

тогда ничего не показывает. Но функция на самом деле вызывается (я проверил с помощью отладчика) Может ли быть так, что она не использует правильный экземпляр представления?

вот мой макет:

enter image description here

и вот моя функция, которая создает элементы управления:

    UILabel *labelMessage = [[UILabel alloc] initWithFrame:CGRectMake(left+5, lastcalculatedHeight-5, 220, calculatedHeight)];           
    [labelMessage setText:msg];
    [labelMessage setFont:[UIFont fontWithName:@"Arial" size:12.0]];
    [labelMessage setLineBreakMode:UILineBreakModeWordWrap];
    [labelMessage setTextColor:[UIColor blackColor]];
    [labelMessage setAdjustsFontSizeToFitWidth:NO];
    [labelMessage setNumberOfLines:floor( msg.length / 40 )+2];
    [labelMessage setBackgroundColor:[UIColor clearColor]];
    [scrollView addSubview:labelMessage];
    [labelMessage release];


    UIButton *buttonTime = [[UIButton alloc] initWithFrame:CGRectMake(left, lastcalculatedHeight+40, 50, 20)];  
    [buttonTime setBackgroundImage:[[UIImage imageNamed:@"hour_bubble.png"] stretchableImageWithLeftCapWidth:9 topCapHeight:13] forState:UIControlStateDisabled];
    [buttonTime setFrame:CGRectMake(left_hour_button, lastcalculatedHeight+calculatedHeight-30, 55, 25)];
    [buttonTime setTitle:date2 forState:UIControlStateDisabled];                
    [buttonTime setTitleColor:[UIColor blackColor] forState:UIControlStateDisabled];
    buttonTime.titleLabel.font=[UIFont fontWithName:@"Helvetica" size:8.0]; 
    buttonTime.titleLabel.lineBreakMode= UILineBreakModeWordWrap;
    [buttonTime setEnabled:FALSE];
    [scrollView addSubview:buttonTime];
    [buttonTime release];

Я также хочу автоматически прокрутить uiscrollview до дна, когда я вызываю эту функцию ... но она не работает, как будто симулятор сходит с ума, когда я вызываю следующее: Я пытался использовать

CGPoint offset = CGPointMake(0,lastcalculatedHeight);
[scrollView setContentOffset: offset animated: YES];

Я получил это от UIScrollView программно прокрутить вниз

1 Ответ

0 голосов
/ 26 марта 2011

Поведение, которое вы описываете, звучит так, как будто ваше уведомление не отправляется в основной ветке;все обновления пользовательского интерфейса должны выполняться в главном потоке.См. мой ответ на ваш другой вопрос , где приведен код для решения проблемы.

...