我有一个显示产品和过滤页面的产品页面。过滤器页面上有一个按钮,根据情况有 2 个条件。根据过滤器,我显示数据库中的不同产品。
我有一个问题。如果用户转到过滤屏幕并且没有选择任何内容,我应该返回相同的页面,而不会再次加载我的视图。
如果从过滤器视图中选择了任何内容,则此 segue 应重新加载我的产品屏幕,并使用选定的过滤器获取正确的数据。
如何将此按钮设置为使用 2 种不同的类型?
你应该定义你自己的协议,让我们把它命名为FilterSelector
。
protocol FilterSelector{
func selectFilter(filter: String)
}
然后在用户将选择过滤器的FiltersViewController
中,您应该定义一个delegate
让我们将其命名为filterSelectorDelegate
var filterSelectorDelegate: FilterSelector!
然后在产品页面中,您将实现这样的协议FilterSelector
extension ProductsViewController: FilterSelector{
func selectFilter(filter: String){
//Dismiss the filtersViewController
//and do what you want with the selected filter
}
}
最后,在"产品"页面中,您应该在显示筛选器页面时设置过滤器委托。在过滤器页面中,当用户选择过滤器时,您将调用filterSelectorDelegate.selectFilter("selectedFilter")
。