在Swift的整个应用程序中使用相同的搜索方法

时间:2016-10-06 10:48:37

标签: swift inheritance search protocols

我是Swift的新手,在一个控制器中开发了一个带有词汇表的应用程序,其中包含一个搜索栏和通过UISearchBarDelegate关联的方法。我想在其他控制器中使用完全相同的方法。

我已经将词汇表数据放在一个单例中,但是如何在不复制所有方法的情况下使用搜索方法。我可以简单地让其他控制器继承我的GlossaryController吗?但协议怎么样?

2 个答案:

答案 0 :(得分:0)

你可以创建一个新的swift文件并将你的方法放在那里。然后,您可以从任何其他文件访问它们......

答案 1 :(得分:0)

@Sotiris: 究竟。我从搜索委托中覆盖了几个方法,比如

   // MARK: - Search Bar delegate
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {    }

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {    }

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {    }

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {    }

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {}

当我的控制器实现UISearchBarDelegate时,他们需要覆盖这些方法(或其中一些方法)。 如果我创建一个实现委托并重写这些方法的类,我可以在控制器中调用这个新类,而不需要再实现UISearchBarDelegate。