Xcode - UILabel не меняет значение в viewDidAppear - PullRequest
3 голосов
/ 12 января 2011

Привет всем, у меня есть приложение для iPhone, которое я создаю.Он использует uitableview, и он переходит к подробному представлению.

Теперь в подробном представлении у меня есть представление с прокруткой, и все данные (XML) приходят в него нормально, каждый раз, без проблем.

Мои UILabels в моем scrollview обновляются с правильными данными, но они продолжают добавлять подпредставления друг на друга, чтобы продолжать добавлять метки после метки, и все это выглядит просто ужасно.

Я перепробовал все, чтобыпопробуйте удалить такие подпредставления, как:

for(UIView *subview in [scrollView subviews]) {
 [subview removeFromSuperview];
}

И

[[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

Так что я в замешательстве, я понятия не имею, что происходит.Любая помощь?Я искал в Google целую вечность, но продолжаю находить те же самые ответы, которые не работают: (

Любое направление на сайты, которые могут вам помочь, о которых вы знаете, будет высоко оценено.

Спасибо!

Вот что у меня есть в контроллере, который загружает все скроллвью и метки:

- (void)viewDidAppear:(BOOL)animated {

 // Create the scroll view for this view
 UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
 scrollView.contentSize = CGSizeMake(320, 270);
 [scrollView setFrame:CGRectMake(0, 198, 320, 170)];

 // Do the labels for the text
 UILabel *dates = [[UILabel alloc] initWithFrame:scrollView.bounds];

 dates.textColor = [UIColor whiteColor];
 dates.font = [UIFont boldSystemFontOfSize:12];
 dates.text = round_date;
 dates.tag = 1;
 [dates setBackgroundColor:[UIColor clearColor]];
 [dates setFrame:CGRectMake(10, 10, 280, 22)];
 [scrollView addSubview:dates];
 [dates release];

 // Add the content to the main scrollview
 [self.view addSubview:scrollView];
 [scrollView release];

}

1 Ответ

0 голосов
/ 12 января 2011

Хорошо, причина этого в том, что viewDidAppear будет вызываться каждый раз, когда вы представляете представление.

Если вы сделаете это

-(void) viewDidLoad;

вместо.

Чтобы вы могли получить к ним доступ позже, вы можете сохранить ссылку на них в своем UIViewController

-(void) viewDidLoad {
    scrollView = [[UIScrollView alloc] initWithFrame];
    [self.view addSubview:scrollView];
}

и определите его в заголовочном файле с помощью:

UIScrollView *scrollView;
...