大家知道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 查看本文章