Iphone 如何在执行编辑操作时启用表视图单元格的编辑内容

Iphone 如何在执行编辑操作时启用表视图单元格的编辑内容,iphone,uitableview,edit,Iphone,Uitableview,Edit,大家好,我祝大家新年快乐 我有两个视图控制器,一个是用户填充表视图中的所有字段并单击保存,数据被插入到sqlite数据库的表中,我已经成功地从sqlite数据库表插入、更新和检索数据 另一个视图控制器,用户可以在其中查看保存的数据(我的案例:提醒)。我已成功显示保存的数据,即,当我保存提醒时,视图提醒页面中会添加一个单元格,实例中保存的提醒也会显示出来,对于每个保存的提醒都是如此,以此类推 用户很可能会对编辑他/她保存的内容感兴趣,并且需要编辑。因此,我放置了一个编辑按钮,并实现了单元格的定向和

大家好,我祝大家新年快乐

我有两个视图控制器,一个是用户填充表视图中的所有字段并单击保存,数据被插入到sqlite数据库的表中,我已经成功地从sqlite数据库表插入、更新和检索数据

另一个视图控制器,用户可以在其中查看保存的数据(我的案例:提醒)。我已成功显示保存的数据,即,当我保存提醒时,视图提醒页面中会添加一个单元格,实例中保存的提醒也会显示出来,对于每个保存的提醒都是如此,以此类推

用户很可能会对编辑他/她保存的内容感兴趣,并且需要编辑。因此,我放置了一个编辑按钮,并实现了单元格的定向和删除,但是我如何编辑单元格,即如何使单元格导航到添加提醒页面,在用户选择单元格时,该页面保存了该实例(提醒)的数据(在我的示例中:具有单行的节)

我可以让用户导航到添加提醒页面,但如何访问表视图部分中包含的与该提醒相对应的值

让用户更改提醒,如电话号码、日期、消息正文等,或者其他任何内容

我做了几次尝试,在谷歌上搜索了各种链接,但都没有找到合适有效的解决方案

以下是我如何根据“添加提醒”页面中的用户保存检索提醒:

-(void)loadgReminders
{
    self.frndsArray = nil;
    self.frndsArray = [[NSMutableArray alloc]init];

    //Retrieve the group of reminder
    const char *thePath = [self.databasePath UTF8String];
    sqlite3_stmt *statment;

    if (sqlite3_open(thePath, &remindersDB) == SQLITE_OK)
    {
    NSString *getQuery = [NSString stringWithFormat:@"SELECT * FROM reminders WHERE Grp = 'Family'"];
        const char *sqlite_stmt = [getQuery UTF8String];

        if (sqlite3_prepare_v2(self.remindersDB, sqlite_stmt, -1, &statment, NULL) == SQLITE_OK)
        {
            while (sqlite3_step(statment) == SQLITE_ROW) 
            {
                ReminderClass *remind = [[ReminderClass alloc]init];
                remind.Name = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 1)];
                remind.Event = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 2)];
                remind.Date = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 3)];

                NSDateFormatter *dateFormat = [[[NSDateFormatter alloc]init]autorelease];
                [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
                NSDate *date = [dateFormat dateFromString:remind.Date];
                [dateFormat setDateFormat:@"MMMM dd"];
                NSString *dateVal = [dateFormat stringFromDate:date];
                remind.Date = dateVal;

                [self.frndsArray addObject:remind];

                [remind release];
            }

            sqlite3_finalize(statment);
        }

        sqlite3_close(remindersDB);
    }
}
请帮我提一些有价值的建议


提前感谢:)

在tableview委托方法中:

 cellForRowAtIndexPath:  
您可以访问frndsArray的成员。 类似地,当用户选择一行时

 didSelectRowAtIndexPath: 
你的代表被召唤

只需访问frndsArray的同一个成员(通常通过indexPath.row),并通过init方法或通过设置iVar将该对象传递给您的详细信息/编辑视图控制器

如果要在detail view控制器中实现保存操作,还需要将主键传递给detail VC,以便它可以基于该键执行sql更新

编辑: 伪代码:

 -(void) tableView:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     ReminderClass *rem = (ReminderClass *)[self.frndsArray objectAtIndex:indexPath.row];

     // Instantiate your detail/editor view controller,
     // and pass in the ReminderClass object to be edited.
     ReminderDetailViewController *rdvc = [[ReminderDetailViewController alloc] initWithReminder: rem];
     [self.navigationController pushNavigationController:rdvc animated:YES];
     [rdvc release];
 }
编辑2:更多psuedo代码(您还需要执行#导入和@synthesis和dealloc)

在MemberDetailViewController.h中添加以下内容:

 @property(nonatomic, retain) ReminderClass *myLocalReminderInstance;
在ReminderDetailViewController.m中,添加此初始值设定项方法:

 -(id) initWithReminder:(ReminderClass *)aReminder {
       if ( (self=[super init]) ) {
            self.myLocalReminderInstance = aReminder;
       }
       return self;
  }

谢谢你的回答,但是描述有点混乱,你能说得更清楚一点吗,再次谢谢:)非常感谢你编辑的答案。我从代码片段中理解了所有的意图。但是我不知道如何将提醒类对象传递给rdvc。此外,我没有任何名为initWithReminder的方法,在这方面也需要帮助!,谢谢:)您需要为rdvc编写该方法。请参阅编辑2。感谢ton Rayfleck提供的所有问题和答案,将实施并返回给您:)是的,发现了什么问题,我们需要将值传递给提醒类对象,即textField.text=提醒立场。Name、textField.text=提醒立场。Event等。。。再次感谢你的想法,它起到了神奇的作用,不要介意我这边的错误:P干杯:)