Eureka按需定制PushRow跳转控制器视图

大家知道Eureka中有各种功能的Row,其中PushRow在转场显示整个独立视图内容的时候尤为有用。

比如,我们希望点击选项PushRow后跳转至显示全部选项的VC中去。

PushRow<String>(){row in
    row.title = "查看全部记录"
    row.options = habit.allRecords
    row.value = nil
    row.selectorTitle = "全部执行记录"
}.onPresent {from,to in
    to.dismissOnSelection = false
    to.dismissOnChange = false
    //设置toVC的Section头部内容为空
    to.form.allSections[0].header?.title = ""
}

但是有时我们又不希望用户可以选择某个选项,即“只能看,不能选”

我们可以简单粗暴的在onPresent块中加上一句:

to.view.isUserInteractionEnabled = false

就可以了。但是当显示内容太多需要滚动时,你会发现这时连滚动也不可以了…

所以把上面那句先注释掉,然后加上这一句:

to.tableView.allowsSelection = false

运行App并没有带来期待的效果,用户在点击PushRow时crash掉了,提示:

to.tableView为nil

为毛tableView会是nil呢?没太搞明白…貌似必须先对view进行一下访问(这样顺面把它的子View,tableView加载进来了),才可以正常访问tableView.

这不影响我们的目的,我们取消上面的注释的那句,只不过把它改为true就好了,现在完整的代码如下:

<<< PushRow<String>(){row in
    row.title = "查看全部记录"
    row.options = habit.allRecords
    row.value = nil
    row.selectorTitle = "全部执行记录"
}.onPresent {from,to in
    to.dismissOnSelection = false
    to.dismissOnChange = false

    to.view.isUserInteractionEnabled = true
    to.tableView.allowsSelection = false

    to.form.allSections[0].header?.title = ""
}

运行App,完美达到了我们的效果:

这里写图片描述

阅读更多

扫码向博主提问

大熊猫侯佩

博客专家

iOS以及ROR、Swift、ObjC
  • 擅长领域:
  • iOS开发
  • ROR开发
  • Swift
  • C及汇编语言
  • 框架设计
去开通我的Chat快问
版权声明:大熊猫猪·侯佩原创或翻译作品.谢绝转载! hopy https://blog.csdn.net/mydo/article/details/80687737
个人分类: ios 和 os x开发
所属专栏: CocoaTouch开发之旅
上一篇Swift富含表达力的枚举!
下一篇通过Xib自定义UIViewController实例化时报错的解决
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭