IOS/Swift:在UITableView上保存单元格选择

IOS/Swift:在UITableView上保存单元格选择,ios,uitableview,swift,selection,cell,Ios,Uitableview,Swift,Selection,Cell,我有一个主细节布局,两个视图中都有表视图。左面板有一个患者列表,右面板有一个文档列表,通过更改患者选择文档将重新加载,如果用户单击文档,它将切换到webView以显示PDF 为了保持一致性,我使用下面的代码默认选择了Patient表中的第一个单元格 override func viewDidAppear(animated: Bool) { super.viewDidAppear(true) let rowToSelect:NSIndexPath = NSIndexPath(for

我有一个主细节布局,两个视图中都有表视图。左面板有一个患者列表,右面板有一个文档列表,通过更改患者选择文档将重新加载,如果用户单击文档,它将切换到webView以显示PDF

为了保持一致性,我使用下面的代码默认选择了Patient表中的第一个单元格

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)
    let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0);
    self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None)
    self.performSegueWithIdentifier("showDetail", sender: self)
  }

工作正常,对吗?是的,但从这里开始它变得有点不一致,在关闭此PDF文档(通过单击导航上的“完成”)后,我先前选择的单元格将熄灭,并再次指向第一个患者。有没有办法保存此选择?哦,甚至在详细信息页面上保存选择。谢谢。

创建一个
nsindepath
属性

将ViewDidDisplay更改为仅默认选择第一个单元格(如果以前没有选择):

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)
    if (!self.rowToSelect) {
        rowToSelect = NSIndexPath(forRow: 0, inSection: 0);
        self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None)
        self.performSegueWithIdentifier("showDetail", sender: self)
    }    
  }

didSelectRow
委托方法中,将所选索引路径存储在
self.rowToSelect
中,创建一个
nsindepath
属性

将ViewDidDisplay更改为仅默认选择第一个单元格(如果以前没有选择):

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)
    if (!self.rowToSelect) {
        rowToSelect = NSIndexPath(forRow: 0, inSection: 0);
        self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None)
        self.performSegueWithIdentifier("showDetail", sender: self)
    }    
  }

didSelectRow
delegate方法中,将所选索引路径存储在
self.rowToSelect

中,可能我误解了您的问题,但不会将indexath存储在delegate
方法tableView(u.tableView:UITableView,didselectrowtindexpath:nsindexath)中的实例变量中
玩这个把戏吗?@LevLandau你能看看我的其他评论吗?我知道@Lord Zsolt已经回答了你的问题。我很高兴听到您的问题得到了解决。也许我误解了您的问题,但不会将indexPath存储在委托
方法tableView(uTableView:UITableView,didSelectRowatineXpath indexPath:NSIndexPath)中的实例变量中
玩这个把戏吗?@LevLandau你能看看我的其他评论吗?我知道@Lord Zsolt已经回答了你的问题。我很高兴听到您的问题得到了解决。感谢您的解决方案,当我尝试将indexpath分配给rottoSelect时,它会在“self”中弹出一个错误,说不能分配给“rowToSelect”。对于
rowToSelect=nsindepath(forRow:0,inSection:0),它会弹出相同的错误
rowToSelect=indepath
它是var还是let属性?应该是var。我怎么能忘记这么简单的事情,谢谢。将其更改为var可以消除错误,但现在它不会加载细节部分中的数据,因为当应用程序最初加载时,
if((self.rowToSelect)!=nil)
的计算结果为false。不管怎样,为了解决这个问题?我没说零,我说是零nil与if(变量)和!=nil与if(!variable)相同。现在可以工作了,谢谢您的帮助。我接受并更新了您的答案:)谢谢您的解决方案,当我尝试将indexpath分配给rottoSelect时,它会弹出一个错误,在“self”中说不能分配给“rowToSelect”。对于
rowToSelect=nsindepath(forRow:0,inSection:0),它会弹出相同的错误
rowToSelect=indepath
它是var还是let属性?应该是var。我怎么能忘记这么简单的事情,谢谢。将其更改为var可以消除错误,但现在它不会加载细节部分中的数据,因为当应用程序最初加载时,
if((self.rowToSelect)!=nil)
的计算结果为false。不管怎样,为了解决这个问题?我没说零,我说是零nil与if(变量)和!=nil与if(!variable)相同。现在可以工作了,谢谢您的帮助。我接受了你的答案并投了赞成票:)