在UITableViewCell和UIViewController之间进行通信的最佳方式

在UITableViewCell和UIViewController之间进行通信的最佳方式,第1张

概述下面的代码有效,但可能有更好的方法.我的目标是在从编辑模式中止时从UITableCell调用UIViewController函数. 我这样做是通过为每个UITableViewCell设置一个实例化的UIViewController引用,然后在UITableViewCell状态更改时调用一个函数CancelDelete(). 代码似乎效率低下,因为对于每个MyCell,我首先将占位符MyViewCo 下面的代码有效,但可能有更好的方法.我的目标是在从编辑模式中止时从UItableCell调用UIVIEwController函数.

我这样做是通过为每个UItableVIEwCell设置一个实例化的UIVIEwController引用,然后在UItableVIEwCell状态更改时调用一个函数CancelDelete().

代码似乎效率低下,因为对于每个MyCell,我首先将占位符MyVIEwContoller实例化为公共变量,然后在UItableVIEw初始化时将其替换为引用UIVIEwController.

有一个更好的方法吗?

class MyCell : UItableVIEwCell{    var prevIoUsstate : UItableVIEwCellStateMask = UItableVIEwCellStateMask.allZeros    // This holds a reference to the parent vIEw controller    // Seems wasteful to instantiate since it gets replaced    var controller:MyVIEwController = MyVIEwController()    // This is called when the user aborts edit mode    overrIDe func willTransitionToState(state: UItableVIEwCellStateMask) {        if state & UItableVIEwCellStateMask.ShowingEditControlMask != nil {            if prevIoUsstate & UItableVIEwCellStateMask.ShowingDeleteConfirmationMask != nil {             // send notification to controller             controller.CancelDelete(self)        }    }    prevIoUsstate = state    }    }class MyVIEwController: UIVIEwController,UItableVIEwDataSource,UItableVIEwDelegate {    func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {        // Give cell access to this controller                                var cell:MyCell = tableVIEw.dequeueReusableCellWithIDentifIEr("cell") as MyCell        cell.controller = self        cell.tag = indexPath.row    }    // This is called from the table cell    func CancelDelete(cell:MyCell) {            editbuttons[cell.tag].hIDden = false    }}
解决方法 将控制器的类型更改为MyVIEwController!而不是MyVIEwController.另外,将其设置为默认值nil.

控制器的声明应如下所示:

var controller: MyVIEwController! = nil

如果您对以感叹号(!)结尾的类型有任何疑问,请查看:
https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html(在名为Optionals的部分中).

总结

以上是内存溢出为你收集整理的在UITableViewCell和UIViewController之间进行通信的最佳方式全部内容,希望文章能够帮你解决在UITableViewCell和UIViewController之间进行通信的最佳方式所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存