swift UI专项训练8 展示数据

swift UI专项训练8 展示数据,第1张

概述  现在我想要点击表单中的条目,进行标记,再次点击以取消,那么该如何做呢?依然使用的是tableView的重载方法,在 Restaurant中新增一个isCollected的值表示是否收藏,然后回到RestaurantListViewController中,新增: override func tableView(tableView: UITableView, didSelectRowAtIn

现在我想要点击表单中的条目,进行标记,再次点击以取消,那么该如何做呢?依然使用的是tableVIEw的重载方法,在

Restaurant中新增一个isCollected的值表示是否收藏,然后回到RestaurantListVIEwController中,新增:

   overrIDe func tableVIEw(tableVIEw: UItableVIEw,dIDSelectRowAtIndexPath indexPath: NSIndexPath) {       let r1 = restaurantList[indexPath.row]//取出点击的行        r1.isCollected = !r1.isCollected//单击后收藏状态取反        tableVIEw.deselectRowAtIndexPath(indexPath,animated: false)        tableVIEw.reloadData()    }

但是运行的时候是没有反应的,虽然状态已经改了,但是没有体现到页面上,现在应该在页面上增加一个标记,更改后的控制cell的tableVIEw方法如下:
     overrIDe func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {        let cell = tableVIEw.dequeueReusableCellWithIDentifIEr("PCell",forIndexPath: indexPath) as UItableVIEwCell    let r1 = restaurantList[indexPath.row]        // Configure the cell...       cell.textLabel?.text = r1.name//行数        if r1.isCollected{            cell.accessoryType = UItableVIEwCellAccessoryType.checkmark        } else {            cell.accessoryType = UItableVIEwCellAccessoryType.None        }        return cell    }

运行效果,点击条目:


再点一下就取消了,除了勾之外还有很多有趣的标识,大家可以试试。

导航上还有编辑按钮,现在我们来实现编辑功能。现在点击左边的编辑按钮是没反应的,我们需要在vIEwDIDLoad中增加下面的语句:

 self.navigationItem.leftbarbuttonItem = self.editbuttonItem()
要让系统知道导航坐标的按钮是我们的编辑按钮,然后在控制器中加入一个新的方法setEditing,这个也是自动补全的,代码如下:
overrIDe func setEditing(editing: Bool,animated: Bool) {        super.setEditing(editing,animated: true)//先实现父类的        tableVIEw.setEditing(editing,animated: true)    }

现在我们再点击编辑按钮,效果如下:


点击完成会返回。点击左边的红色图标右侧会滑出删除按钮,点击按钮会删除当前行,只需要在控制器中新增一个方法就好,代码如下:

    overrIDe func tableVIEw(tableVIEw: UItableVIEw,commitEditingStyle editingStyle: UItableVIEwCellEditingStyle,forRowAtIndexPath indexPath: NSIndexPath) {        if editingStyle == UItableVIEwCellEditingStyle.Delete{//如果是删除按钮        restaurantList.removeAtIndex(indexPath.row)//先删除数组中的元素            tableVIEw.deleteRowsAtIndexPaths([indexPath],withRowAnimation: UItableVIEwRowAnimation.top)//删除列表行,其他行向上推                    }    }
大家可以试下效果 总结

以上是内存溢出为你收集整理的swift UI专项训练8 展示数据全部内容,希望文章能够帮你解决swift UI专项训练8 展示数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存