gpt4 book ai didi

iphone - 按顺序使用 sqlite 数据库中的表行填充 TableView 部分

转载 作者:行者123 更新时间:2023-12-03 19:44:24 25 4
gpt4 key购买 nike

我有2个 View Controller 页面。添加提醒页面,其中包含保存按钮作为导航栏的右栏按钮

我之前遇到过有关基于添加提醒页面中的保存次数的查看提醒页面的表格 View 中的部分数量的问题:

我找到了根据保存的提醒数量生成单元格的解决方案

这是代码:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)view
{
NSInteger numTableRecords = -1;
sqlite3_stmt *statement;
if (sqlite3_open([self.databasePath UTF8String], &remindersDB) == SQLITE_OK)
{
NSString *sqlStatement = [NSString stringWithFormat: @"select count(*) from reminders"];
const char *sql = [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding];
if(sqlite3_prepare_v2(remindersDB, sql, -1, &statement, NULL) == SQLITE_OK)
{
while(sqlite3_step(statement) == SQLITE_ROW)
{
numTableRecords = sqlite3_column_int(statement, 0);
}
}
else
{
printf("could not prepare statement: %s\n", sqlite3_errmsg(remindersDB));
}
}

else
{
NSLog(@"Error in Opening Database File");
}
sqlite3_close(remindersDB);
return numTableRecords;
}

现在我的问题是我能够检索数据,但不是以正确的方式。我的意思是这是我用来检索数据的代码

if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellId] autorelease];
view.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"reminderbutton.png"]];

label1 = [[[UILabel alloc]initWithFrame:CGRectMake(26, 3, 30, 40)]autorelease];
label1.backgroundColor = [UIColor clearColor];
label1.textColor = [UIColor whiteColor];

label2 = [[[UILabel alloc]initWithFrame:CGRectMake(45, 3, 100, 40)]autorelease];
label2.backgroundColor = [UIColor clearColor];
label2.textColor = [UIColor whiteColor];

label3 = [[[UILabel alloc]initWithFrame:CGRectMake(119, 3, 100, 40)]autorelease];
label3.backgroundColor = [UIColor clearColor];
label3.textColor = [UIColor whiteColor];

label4 = [[[UILabel alloc]initWithFrame:CGRectMake(198, 3, 120, 40)]autorelease];
label4.backgroundColor = [UIColor clearColor];
label4.textColor = [UIColor whiteColor];

//Retrieve the values of database
const char *dbpath = [self.databasePath UTF8String];
sqlite3_stmt *statement;

if (sqlite3_open(dbpath, &remindersDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"SELECT * from reminders ORDER BY id"];

const char *query_stmt = [querySQL UTF8String];

if (sqlite3_prepare_v2(self.remindersDB ,query_stmt , -1, &statement, NULL) == SQLITE_OK)
{
if (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *ID = [[[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)]autorelease];

NSString *nameField = [[[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)]autorelease];

NSString *eventField = [[[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 2)]autorelease];

NSString *dateField = [[[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 3)]autorelease];

label1.text = ID;
label2.text = nameField;
label3.text = eventField;
label4.text = dateField;
}

sqlite3_finalize(statement);
}
sqlite3_close(self.remindersDB);
}


[cell addSubview:label1];
[cell addSubview:label2];
[cell addSubview:label3];
[cell addSubview:label4];

}

return cell;

我插入了 4 个提醒,这 4 个单元格都出现了,但问题在于显示

如下所示

enter image description here

如何让4个单元格中连续显示4个提醒,我的意思是第一个提醒在第一个,第二个提醒在第二个,依此类推。

请帮我解决这个问题,提前谢谢大家:)

抱歉...我在以下链接中找到了该问题的完整解决方案:

Retrieve all rows inserted in sqlite database and display in table view cells containing labels as subviews with different sections

抱歉问这个问题...感谢每一位看过此内容的人,如果有用就采纳

因此我不会删除这个问题,再见 TC :)

最佳答案

我给你一个建议,你试试吧。我希望它会起作用。

做一件事,只需在 viewDidAppearviewWillAppear 中从 sqlite 检索数据并将数据保存在 nsmutableArray 中。

然后在 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 中仅返回 [yourArray count]。

要重新加载表格,只需尝试使用[self.tableview reloadData]

希望能成功。如需进一步说明,请告诉我。

关于iphone - 按顺序使用 sqlite 数据库中的表行填充 TableView 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475446/

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