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,完美达到了我们的效果:

扫描二维码关注公众号,回复: 1616589 查看本文章

这里写图片描述

猜你喜欢

转载自blog.csdn.net/mydo/article/details/80687737