【问题标题】:How to enable editing content of table view cell when edit action is performed执行编辑操作时如何启用表格视图单元格的编辑内容
【发布时间】:2012-01-03 14:47:30
【问题描述】:

大家好,祝新年快乐!

我有 2 个视图控制器,一个用户填写表视图中的所有字段并单击保存,数据被插入到 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);
    }
}

请帮我提出宝贵的建议

提前谢谢大家:)

【问题讨论】:

    标签: iphone uitableview edit


    【解决方案1】:

    在您的 tableview 委托方法中:

     cellForRowAtIndexPath:  
    

    您访问您的 frndsArray 的成员。 同样,当用户选择一行时,

     didSelectRowAtIndexPath: 
    

    在您的委托上调用。

    只需访问 frndsArray 的相同成员(通常通过 indexPath.row),然后通过它的 init 方法或通过设置 iVar 将此对象传递给您的详细信息/编辑 viewController。

    如果您想在细节视图控制器中实现 SAVE 操作,您还需要将主键传递给细节 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:更多伪代码(您还需要执行 #import 和 @synthesize 以及 dealloc)

    在 ReminderDetailViewController.h 中添加:

     @property(nonatomic, retain) ReminderClass *myLocalReminderInstance;
    

    在 ReminderDetailViewController.m 中,添加这个初始化方法:

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

    【讨论】:

    • 感谢您的回答,但是描述有点混乱,能否请您说的更清楚些,再次感谢:)
    • 非常感谢编辑后的答案。我从代码 sn-p 中理解了所有意图。但我不知道如何将提醒类对象传递给 rdvc。更多我不知道有任何名为 initWithReminder 的方法,在这方面也需要帮助!谢谢 :)
    • 你需要为rdvc编写那个方法。请参阅编辑 2。
    • 非常感谢 Rayfleck 的所有关注和回答,我们会实施并回复您:)
    • 是的,发现了问题所在,我们需要将值传递给提醒类对象,即textField.text =remindInstance.Name,textField.text =reminderInstance.Event 等...再次感谢您的想法,这就像魔术一样,不要介意我这边的错误:P 干杯 :)
    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多