Я пытаюсь создать приложение для социальных сетей в swift, которое имеет панель вкладок с 4 значками, каждое из которых подключено к контроллеру представления.Я хочу, чтобы четыре вида коллекций (каждый из которых связан с контроллером представления) прокручивался до самого верха при нажатии на соответствующий значок панели вкладок (точно так же, как в твиттере).
У меня есть логика того, как яхотите, чтобы представление коллекции возвращалось к вершине только в том случае, если значок предыдущей панели вкладок был для этого соответствующего вида коллекции (это означает, что он не просто автоматически прокручивается к вершине при нажатии на соответствующую вкладку, но должен быть снова нажатЯ попытался отладить свой первый случай переключения, но мне не повезло, поэтому у меня пока нет полного кода для других случаев.Я пытаюсь сослаться на правильную раскадровку, затем на правильный контроллер представления (в данном случае homeViewController
) и, наконец, вызвать соответствующий вид представления и использовать setContentOffset
, чтобы вывести его наверх.
Ниже я предоставляю весь свой класс tabBarController
.
import Foundation
import UIKit
class MainTabController: UITabBarController, UITabBarControllerDelegate {
var pastTabBar: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
let tabBarIndex = tabBar.items?.index(of: item)
if tabBarIndex == pastTabBar {
switch tabBarIndex {
case 0:
print ("go to top of home")
//updateHomeCollection = 1
let HomeSB : UIStoryboard = UIStoryboard(name: "Home", bundle: nil)
let HomeVC = HomeSB.instantiateViewController(withIdentifier: "Home") as? HomeViewController
HomeVC?.collectionView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
case 1:
print ("go to top of search")
case 2:
print ("go to top of notifications")
case 3:
print ("go to top of profile")
default:
print ("not working")
}
}
if let tabBarIndex = tabBarIndex {
pastTabBar = tabBarIndex
}
}
}
Он продолжает прерывать сигнал, когда я нажимаю на главную вкладку!Он печатает это точное утверждение:
Поток 1: фатальная ошибка: неожиданно найден ноль при неявном развертывании необязательного значения
в этой строке кода:
HomeVC?.collectionView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)