Заполните разделы табличного представления строками таблицы в базе данных sqlite в порядке
У меня есть 2 страницы контроллера просмотра. Добавить страницу напоминания, которая содержит кнопку сохранения как правую кнопку панели навигации
Ранее у меня возникли проблемы с количеством разделов в табличном представлении для просмотра страницы напоминания в зависимости от количества сохранений на странице добавления напоминания:
Я нашел решение для создания ячеек на основе количества сохраненных напоминаний
это код:
-(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 ячейки появляются, но проблема с отображением
Это выглядит следующим образом
Как я могу последовательно отобразить 4 напоминания в 4 ячейках, я имею в виду 1-е напоминание в 1-м,2-е напоминание во 2-м и т. Д.
Пожалуйста, помогите мне решить эту проблему, спасибо всем заранее:)
Извините все... Я нашел полное решение проблемы по следующей ссылке:
Извините за вопрос... Спасибо всем, кто просмотрел это, возьмите Если полезно
Поэтому я не снимаю этот вопрос, пока ТС:)
2 ответа
Я даю вам одно предложение, просто попробуйте. Я надеюсь, что это сработает.
Сделайте одну вещь, просто получить данные из sqlite в viewDidAppear
или же viewWillAppear
и сохраните данные в массиве nsmutableArray.
Затем в - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
просто верните [ваш счетчик массивов].
и для перезагрузки таблицы просто попробуйте с [self.tableview reloadData]
Я надеюсь, что это будет работать. просто дайте мне знать для дальнейшего уточнения.
Для создания ячейки с этим требуемым цветом просто напишите следующий код в
cell.contentView.backgroundColor=[UIColor colorWithPatternImage:@"Give your cell image"]
в (UITableViewCell *)tableView:(UITableView *)view cellForRowAtIndexPath:(NSIndexPath *)indexPath
метод и не в состоянии, вне условия вы должны поставить его. и почему вы работаете с базой данных в этом методе. это замедлит ваши приложения. дайте мне знать для любого разъяснения.