我有两个UITableView
对象,它们都有一个名为的数组,该数组sectionHeaders
用作引用对象,毫不奇怪,为表中的给定部分提供标题名称。第一个表视图将其作为一个NSMutableArray
并根据需要动态添加标题。第二个视图使用 an并使用速记NSArray
创建数组。@[item1, item2, ...]
这两个对象都被声明为全局实例变量。
第一个表视图创建第二个表视图并将其推送到导航控制器堆栈上。标题在第一次显示前一个视图时正确显示,并且在显示后一个视图时它们总是正确显示,但是当我回击返回第一个视图时,部分标题与第二个视图的标题匹配。通过更改两个变量名之一可以立即解决此问题,但我更愿意首先了解为什么会出现问题。
请让我知道是否有更多信息会有所帮助。我不知道可能是什么原因造成的,所以我不完全确定哪些信息可能有用。
编辑:这是两个对象设置和交互方式的简化版本。
CalendarViewController.m
:
NSMutableArray *sectionHeaders;
@implementation CalendarViewController
-(id) initWithStyle:(UITableViewStyle)style {
self = [super initWithStyle:style];
sectionHeaders = [[NSMutableArray alloc] init];
}
//this is the method that adds items to the sectionHeaders object with irrelevant information excluded
-(void) distributeEvents {
[self.tableView beginUpdates];
if(condition1) {
if(![sectionHeaders containsObject:@"Today"]) {
[headers addObject:@"Today"];
}
}
else if(condition2) {
if(![sectionHeaders containsObject:@"Next week"]) {
[headers addObject:@"Next week"];
}
}
//et cetera...
}
//the only other time the sectionHeaders object comes up is in
- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return sectionHeaders[section];
}
第二个对象 anEventViewController
是在点击单元格时初始化的。它不是使用与sectionHeaders
对象关联的任何变量创建的。
EventViewController.m
:
NSArray *sectionHeaders;
@implementation EventViewController
//within the init method
sectionHeaders = @[@"What", @"When", @"Where"];
//later...
- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return sectionHeaders[section];
}
这就是我对这些对象所做的所有引用。对于问题中没有简化代码,我深表歉意。希望有更多的背景会有所帮助。