2009-06-22 37 views
0

上午:舊觀點重疊較新的具有下列問題

在我的應用我創建一個臨時對象,例如以下列方式標籤:

UILabel *tempLabel = [ [UILabel alloc] initWithFrame: CGRectMake(100, 5, 200, 30)]; 
tempLabel.backgroundColor = [UIColor colorWithRed: 1.0f green: 1.0f blue: 1.0f alpha: 0.0f]; 
tempLabel.text = [ [WordsDatabase sharedWordsDatabase] dbName]; 

[ [self view] addSubview: tempLabel]; 
[tempLabel release]; 

這段代碼被稱爲從viewWillAppear方法。

當視圖本身第一次被調用時,一切都很好。但第二次,新標籤似乎與舊標籤重疊。

爲了使這種效果消失,是否有任何步驟需要採取? 要添加到viewWillDisappear方法的東西?

我試圖將標籤聲明添加到類接口中,並在viewWillDisappear方法中調用[label removeFromSuperview]。在這種情況下,一切都很好。 有沒有辦法做到這一點,而不存儲對標籤的引用?

預先感謝您。

回答

0

您可以使用sortSubviewsUsingFunction:context:方法對您的子視圖進行排序。 實現此目的的一種方法是向每個子視圖添加一個具有整數值的標記(UIView的tag屬性)。然後,您可以按標籤排序是這樣的(假設標籤是一個數字):

排序功能:

[[self view] sortSubviewsUsingFunction:&viewObjectSortByTag context:nil]; 

int viewObjectSortByTag(NSControl *firstView, NSControl *secondView, void *context) { 
    return ([firstView tag] > [secondView tag]) ? NSOrderedAscending : NSOrderedDescending; 
} 

添加一個子視圖經過短短的意見整理