gpt4 book ai didi

iphone - UITableView 和 ViewDidLoad 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:33:44 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个 UITableViewCobtroller,它创建带有复选标记附件类型的 TableView 。 TableView 加载并正常工作。在 didSelectRowAtIndex 方法中,我写了在 sqlite 数据库中添加数据的方法:

        [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];
}

但它不起作用。请给我任何想法。提前致谢。

艾力克

最佳答案

更新的答案:

您首先不应在 viewdidLoad 中执行此操作。这是一种不好的做法,您应该在 cellForRowAtIndexPath: 中进行。

更多解释:

表格尚未在 viewDidLoad 中加载。在执行任何其他操作之前,您必须先执行 [self.tableView reloadData];。这样做会调用表的委托(delegate)方法(它不知道有多少单元格,因此获取任何特定索引路径的单元格没有意义)。参见 Table View Programming guide.

还有:

UITableViewCell *cell = [[UITableViewCell alloc] init];
cell = [self.tableView cellForRowAtIndexPath:lastIndexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;

首先,这是错误的。您正在使用该 alloc/init 泄漏内存。只是做:

UITableViewCell *cell = nil;
cell = [self.tableView cellForRowAtIndexPath:lastIndexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;

关于iphone - UITableView 和 ViewDidLoad 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com