我正在寻找为我的快速项目组织可重用代码的好主意。我想指出,我是快速移动开发的初学者。
例如滚动表视图到顶部/底部,显示对话框甚至转到另一个视图等等。
所有这些东西都包含3-6行相同的代码。几乎每个视图中都有相同的3-6行代码并不是特别好看。所以我想创建一个具有静态函数的类,我可以从每个视图调用它。例如滚动表:
func scrollTable(to position:UITableViewScrollPosition, ofTable tableView: UITableView){
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) {
let numberOfSections = tableView.numberOfSections
let numberOfRows = tableView.numberOfRows(inSection: numberOfSections-1)
if numberOfRows > 0 {
let indexPath = IndexPath(row: numberOfRows-1, section: (numberOfSections-1))
tableView.scrollToRow(at: indexPath, at: .bottom, animated: true)
}
}
}
这是一个好主意吗?可能有人可以推荐一些更好的东西。
答案 0 :(得分:1)
通过编写UIViewController的扩展,可以将自定义方法及其实现注入到任何UIViewController子类中。
答案 1 :(得分:1)
此功能中的所有内容都是本地的,所以它只是一个功能。您可以将该函数提取到自己的文件中并在任何地方使用它。没有必要让它静止。那说(并且没有太多关于这是否是一个好的功能的意见),在Swift中它通常是一个扩展:
extension UITableView {
func scroll(to position: UITableViewScrollPosition) {
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) {
let numberOfRows = numberOfRows(inSection: numberOfSections-1)
if numberOfRows > 0 {
let indexPath = IndexPath(row: numberOfRows-1, section: (numberOfSections-1))
scrollToRow(at: indexPath, at: .bottom, animated: true)
}
}
}
}
(这是一个奇怪的函数,因为它似乎忽略了它的position
参数,所以我认为它应该在某种程度上重写。但即便如此,如果你想要一个可重用的函数,这是基本的方法。)