【发布时间】:2011-07-05 12:40:21
【问题描述】:
SimpleEKDemo 示例在 RootViewController.m 文件的 viewDidLoad 末尾有一个“[self.tableView reloadData]”。
这有必要吗?任何想法为什么要放入这条线?视图不会在 viewDidLoad 之后通过它调用委托到“cellForRowAtIndexPath”之类的方法来绘制吗?
- (void)viewDidLoad {
self.title = @"Events List";
// Initialize an event store object with the init method. Initilize the array for events.
self.eventStore = [[EKEventStore alloc] init];
self.eventsList = [[NSMutableArray alloc] initWithArray:0];
// Get the default calendar from store.
self.defaultCalendar = [self.eventStore defaultCalendarForNewEvents];
// Create an Add button
UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:
UIBarButtonSystemItemAdd target:self action:@selector(addEvent:)];
self.navigationItem.rightBarButtonItem = addButtonItem;
[addButtonItem release];
self.navigationController.delegate = self;
// Fetch today's event on selected calendar and put them into the eventsList array
[self.eventsList addObjectsFromArray:[self fetchEventsForToday]];
[self.tableView reloadData]; // ** REALLY NEEDED **
}
编辑-我确实在文档中注意到了这一点(见下文)-我仍然不清楚上面的代码行是如何需要的-如果您转到另一个视图,然后返回这个视图,那么如果(a)视图被重新初始化而不是它必须再次填充自己,或者(b)如果视图不想重新初始化,则不会调用“viewDidLoad”方法,因此你会在这两种情况下都不会将“reloadData”行代码放在 viewDidLoad 方法的末尾吗?
UITableView 覆盖 UIView 的 layoutSubviews 方法所以 仅当您调用 reloadData 创建一个新的 UITableView 实例 或者当您分配新的数据源时。 重新加载表格视图清除 当前状态,包括当前 选择。但是,如果您明确 调用 reloadData,它会清除此状态 以及任何随后的直接或间接 调用 layoutSubviews 不会 触发重新加载。
【问题讨论】:
标签: iphone ios uitableview viewdidload