使用 Modal Segue 保留复选标记

Posted

技术标签:

【中文标题】使用 Modal Segue 保留复选标记【英文标题】:Retain Check Marks with Modal Segue 【发布时间】:2014-03-14 18:09:40 【问题描述】:

我是 x-code 的新手,我想知道:是否可以通过模态 segue 保留复选标记?

我会在我的清单上打勾:

但是当我按下完成然后以模态segue返回屏幕时,它会显示如下:

尽管我以模态方式更改视图,是否可以保留这些复选标记?

我有这个代码来创建复选标记:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    // Return the number of sections.
    return 1;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    // Return the number of rows in the section.
    return [self.toDoItems count];


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"ListPrototypeCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    NewItem *toDoItem = [self.toDoItems objectAtIndex:indexPath.row];
    cell.textLabel.text = toDoItem.itemName;
    if (toDoItem.completed) 
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
     else 
        cell.accessoryType = UITableViewCellAccessoryNone;
    
    return cell;


#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [tableView deselectRowAtIndexPath:indexPath animated:NO];
    NewItem *tappedItem = [self.toDoItems objectAtIndex:indexPath.row];
    tappedItem.completed = !tappedItem.completed;
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

【问题讨论】:

【参考方案1】:

当您弹出或关闭视图控制器时,该视图控制器消失了。但是,您有几个选项可以记住视图控制器所处的状态。最简单的方法可能是存储一个全局变量,可能是一个NSArray,以记住检查的项目。然后,当您加载此视图控制器时,您可以“检查”该 NSArray 中存在的任何项目。

请注意,此方法仅在应用打开的生命周期内有效。如果他们关闭应用程序,它就会消失。如果您想在他们下次打开应用程序时保留“已检查”项目,您需要将其存储在NSUserDefaults - 那里的数据在应用程序从手机中删除之前可用。

【讨论】:

感谢您的帮助。我想我会尝试使用 NSUserDefaults 以便在应用程序多次启动时保留复选标记:)

以上是关于使用 Modal Segue 保留复选标记的主要内容,如果未能解决你的问题,请参考以下文章

Storyboard 中的 Modal 和 Push segue 有啥区别?

使用 Swift 3 将数据从 Modal Viewcontroller 传递到 rootController(不要 Segue)

如何在 Modal Segue 的过渡中添加完整的卷曲效果?

Swift、Modal Segue 和 ViewController 问题

页面刷新后保留选择复选标记

从 Modal/Popover 展开 Segue 导致开始/结束外观转换的调用不平衡