我有一个水平滚动的单元格的集合视图。每次我退出时,我的主视图控制器都会被关闭到登录屏幕。但是当我重新登录时,似乎我的主视图控制器从未从内存中删除。我这样说是因为我的集合视图单元格与我退出之前的位置相同。
我尝试了一切,从viewWillAppear并重新加载数据,尝试将我的登录视图控制器作为我的根窗口。有什么建议吗?
(为了清楚地证明这一点,当您从Instagram注销时(从设置视图控制器),以模态方式显示登录视图。当您重新登录时,您将看到主页提要,而不是设置视图控制器。我想重置数据的层次结构)
class MainController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
let feedId = "feedId"
var allUserCategory: AllUserCategory?
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.pagingEnabled = true
collectionView?.backgroundColor = UIColor(r: 250, g: 250, b: 250)
collectionView?.registerClass(AllUserCategory.self, forCellWithReuseIdentifier: feedId)
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Log Out", style: .Plain, target: self, action: #selector(handleLogout))
navigationItem.rightBarButtonItem?.tintColor = UIColor.blueColor()
navigationController?.navigationBar.translucent = false
checkIfUserLoggedIn()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.collectionView?.reloadData()
}
func handleLogout() {
print("Logged out")
do {
try FIRAuth.auth()?.signOut()
} catch let logoutError {
print(logoutError)
}
allUserCategory?.users.removeAll()
let loginController = LoginController()
let loginNav = UINavigationController(rootViewController: loginController)
presentViewController(loginNav, animated: true, completion: nil)
}
}
答案 0 :(得分:0)
在dealloc中添加NSLog
也许你的代码中有一些内存泄漏(MainViewController)。
答案 1 :(得分:0)
对IBOutlet和自定义委托使用弱引用