将“活动指示器”添加到 TableView 并在 Swift 中恢复为“披露指示器”

Posted

技术标签:

【中文标题】将“活动指示器”添加到 TableView 并在 Swift 中恢复为“披露指示器”【英文标题】:Add "activity indicator" to TableView and restore to "disclosure indicator" in Swift 【发布时间】:2015-09-06 11:14:25 【问题描述】:

我有一个 TableView,每个单元格的附件都设置为“披露指示器”,它工作正常。

然后,我决定添加一个活动指示器,同时使用来自外部来源的数据更新每个单元格。为此,我设置:

cell.accessoryView = UIActivityIndicatorView(activityIndicatorStyle: .Gray)

当我从外部来源加载完数据后,我的“披露指示器”(单元格右侧的箭头)丢失了。我应该将“cell.accessoryView”恢复到什么?

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

    let item = items[indexPath.row]
    var cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell

    // SET ACTIVITY INDICATOR HERE
    if cell.accessoryView == nil 
        let indicator = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
        cell.accessoryView = indicator
    

    let indicator = cell.accessoryView as! UIActivityIndicatorView

    // ... some code here ...

    switch (item.state) 

        case .New:
            indicator.startAnimating()
            self.fetchExternalData(item, indexPath:indexPath)

        case .Downloaded:
            indicator.stopAnimating()

            // I'D LIKE TO RESTORE THE DISCLOSURE INDICATOR HERE
            cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
            // cell.accessoryView = ???
    

    return cell

【问题讨论】:

【参考方案1】:

糟糕,我刚刚尝试设置“cell.accessoryView = nil”,它起作用了。我应该在发布之前想到这一点:-(

【讨论】:

【参考方案2】:

当然需要设置

cell.accessoryType = UITableViewCellAccessoryNone;

更改附件视图之前

【讨论】:

以上是关于将“活动指示器”添加到 TableView 并在 Swift 中恢复为“披露指示器”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tableView 加载时显示活动指示器?

Obj-C - 添加活动指示器以下拉刷新?

获取行数据时在表视图中显示活动指示器

将活动指示器添加到警报视图

将活动指示器添加到导航控制器栏

活动指示器未显示在视图前面