Я использую tabbarcontroller в качестве начального контроллера просмотра.Я заметил, что когда я меняю вкладку (нажмите на другую вкладку), память, которая у нее остается, и новая память представления добавляют ее к старой.
Я пытался уменьшить ее (память вкаждая вкладка), изменив все мои переменные на ленивый, и это работало для каждого вида отдельно, и теперь у меня не очень высокий, так как мне приходилось воздействовать на энергию раздела.Но проблема с представлениями все еще остается (я получаю предупреждение о памяти после небольшой навигации по представлениям).
И приложение также разбилось и выдает ошибку:
прекращено из-за проблемы с памятьюswift
У меня есть 5 вкладок:
First with tableView
Second with collectionView and tableview
Third with a Camera
fourth with a tableView
And The last one 4 tableView
Из своего поиска я понял, что мне нужно что-то сделать с viewDidDisappear или Unload
Tabbar ScreenShot:
Создание пользовательского UITabbarController
перехода от storyBoard к пользовательскому элементу управления навигацией:
Пользовательский переход от истории к первой вкладке UITabbarController
(Домашняя страница):
Это мой пользовательский UITabbar
Класс контроллера:
import UIKit
var tabBarItemCount = Int()
class CustomTabBarControl: UITabBarController, UITabBarControllerDelegate
{
@IBOutlet weak var tabBarItems: UITabBar!
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarStyle = .lightContent
self.delegate = self
statusBarStyleCheck = true
if let items = self.tabBarItems.items {
for i in 0..<items.count {
items[i].tag = i
}
}
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if item.tag == 4{
boolTabProfile = true
UserStore.shared.userIdToViewProfile = UserStore.shared.userId
}
}
}
Это мой пользовательский UINavigation
Класс контроллера:
import UIKit
let NavigationTitleFont = "Nunito-Light"
class CustomNavigationControl: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
let textAttributes = [NSAttributedString.Key.font: UIFont(name: "Nunito-Light", size: 16)!,NSAttributedString.Key.foregroundColor:#colorLiteral(red: 0.7007879615, green: 0.6955401301, blue: 0.7298486829, alpha: 1)] as [NSAttributedString.Key : Any]
navigationBar.titleTextAttributes = textAttributes
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.setNeedsStatusBarAppearanceUpdate()
}
//Set navigation bar
var isNavigationbarHidden: Bool {
get {
return self.isNavigationbarHidden
}
set {
isNavigationBarHidden = newValue
}
}
//Navigation BarColor
var barColor: UIColor {
get {
return navigationBar.barTintColor!
}
set {
navigationBar.barTintColor = newValue
}
}
//Navigation Title Color
var navigationTitleColor: UIColor {
get {
return #colorLiteral(red: 0.7007879615, green: 0.6955401301, blue: 0.7298486829, alpha: 1)
}
set {
navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Nunito-Light", size: 16)!,NSAttributedString.Key.foregroundColor:newValue] as [NSAttributedString.Key : Any]
}
}
//Hide backButton
var hidebackButton: Bool {
get {
return navigationItem.hidesBackButton
}
set {
navigationItem.hidesBackButton = newValue
}
}
//NavigationBarImage
var navigationBarImage: UIImage? {
get {
return nil
}
set {
self.navigationBar.setBackgroundImage(newValue, for: UIBarMetrics.default)
self.navigationBar.shadowImage = UIImage()
}
}
//Left Navigation image
var leftNavigationCustomItem: UIImage? {
get {
return nil
}
set {
self.navigationItem.hidesBackButton = true
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: newValue, style: .plain, target: self, action: #selector(self.leftNavigationItemAction(_:)))
}
}
@objc func leftNavigationItemAction(_ sender: UIBarButtonItem) -> Void {
_ = popOrDismissViewController(true)
}
}
И все 5 вкладок связаны через пользовательский класс навигации.
Может кто-нибудь объяснить мне, как решить эту проблему.
Любая помощь будет бОчень признателен.
Заранее спасибо.