我遇到以下问题:
在我的应用程序中,我正在创建一个临时对象,例如以下列方式的标签:
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 :(得分:0)
您可以使用sortSubviewsUsingFunction:context:
方法对子视图进行排序。
实现此目的的一种方法是向每个子视图添加一个带整数值的标记(UIView的tag
属性)。然后,您可以按标签排序(假设标签是数字):
排序功能:
int viewObjectSortByTag(NSControl *firstView, NSControl *secondView, void *context) {
return ([firstView tag] > [secondView tag]) ? NSOrderedAscending : NSOrderedDescending;
}
添加子视图后,只需对视图进行排序:
[[self view] sortSubviewsUsingFunction:&viewObjectSortByTag context:nil];