Iphone UITableView和ViewDidLoad方法
在我的应用程序中,我有一个uitableviewcontroller,它创建带有复选标记附件类型的表视图。“表视图”可以正确加载和工作。在DidSelectRowatinex方法中,我编写了在sqlite数据库中添加数据的方法:Iphone UITableView和ViewDidLoad方法,iphone,ios,uitableview,viewdidload,Iphone,Ios,Uitableview,Viewdidload,在我的应用程序中,我有一个uitableviewcontroller,它创建带有复选标记附件类型的表视图。“表视图”可以正确加载和工作。在DidSelectRowatinex方法中,我编写了在sqlite数据库中添加数据的方法: [self.dataBaseController openSettingsDB]; [self.dataBaseController updateRecordIntoTableNamed:kTableName withField:kSFi
[self.dataBaseController openSettingsDB];
[self.dataBaseController updateRecordIntoTableNamed:kTableName withField:kSField1Name fieldValue:newCell.textLabel.text];
[self.dataBaseController closeDB];
它工作得很好。所以我想要的是从数据库中检索记录的数据,当重新启动应用程序以选择我从sqlite数据库检索到的具有标题的行时
我试过这个:
-(void)viewDidLoad
{
NSArray *array = [[NSArray alloc] initWithObjects:
kCourse1, kCourse2, kCourse3, kCourse4, kCourse5, kCourse6, nil];
self.list = array;
[self.dataBaseController openSettingsDB];
[self.dataBaseController getRowFromTableNamed:kTableName whichRow:kSField1Name];
self.chosenStr = self.dataBaseController.dataString;
[lastIndexPath indexAtPosition:[array indexOfObjectIdenticalTo:self.chosenStr]];
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell = [self.tableView cellForRowAtIndexPath:lastIndexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.tableView reloadData];
[array release];
[super viewDidLoad];
}
但它不起作用。请给我一些建议。提前谢谢
Alick更新答案: 首先,您不应该在
viewdidLoad
中执行此操作。这是一种不好的做法,您应该在cellforrowatinexpath:
中执行
更多解释:
表尚未加载到viewDidLoad
中。您必须执行[self.tableView重载数据]代码>在执行任何其他操作之前。这样做将调用表的委托方法(它不知道有多少个单元格,所以获取任何特定索引路径的单元格是没有意义的)。看
此外:
首先,这是错误的。您正在使用该alloc/init泄漏内存。只要做:
UITableViewCell *cell = nil;
cell = [self.tableView cellForRowAtIndexPath:lastIndexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
您需要调用UITableView
的-scrollToRowAtIndexPath:atScrollPosition:animated:
方法。我将把它放在viewdide出现时:
您的UITableViewController
方法中。请参阅。我一开始就注意到第一个代码段使用kTableName作为表名,第二个代码段使用kSettingsTableName,这可能是问题的原因。除此之外,我们可能还需要更多的细节;在ViewDidLoad中放置为第一个语句整个(正确)答案可以归结为最后一句话,但是额外的信息还是+1!
UITableViewCell *cell = nil;
cell = [self.tableView cellForRowAtIndexPath:lastIndexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;