Как сделать view видимым на любом VC в стеке!?


#1

Всем привет, кто знает какое поле отвечает за видимость view в стеке?
т.е. если я добавляю view в tabBar, как сделать его видимым на любом VC в приложении?!


#2

Ну смотря как ты его добавил. Размеры ему еще неплохо бы указать. Хотя с кастомизацией tabbar мало работал.


#3

Тут не в размерах и контроллере дело)
через subview
Пробовал z-position указывать повышенный и другими способами view добавлять!
суть в том, что хочу определить один view в таб баре, указать ему координату по y за пределами vc и при происхождении события опускать view, но для этого нужно сделать чтобы он и на модальных окнах отображался


#4

Может есть простой способ, но я бы копал в сторону кастомных таббаров


#5


Мне вот товарищи подкинул)
Буду разбираться как устроен)
Спасибо!


#6

Такого плана плашки я добавлял сам в Window. У меня была задача где надо было показывать состояние интернета. Плашка появлялась и пряталась спустя какое-то время.
Также была задача чтобы на любой вьюхе можно было спиннер показывать и прятать (если идет загрузка). Так что это можно без либы сделать, а самому. Я думал тебе надо внутрь таббара втиснуть кастомные элементы.


#7

Так, спинер я в навигатион пихнул, эт плохая идея?!
Да, через window и стоит скорее всего творить!)

Спасибо!

Так в этом и суть) Не хочу либу импортить, посмотреть как работает нужно)


#8

Пиши расширение для вью. И там бери window и добавляй любую логику. А когда убрать захочешь, делай кастинг по имени класса.


#9

А как я определяю на каком vc я нахожусь ?


#10

Делаете общий VC, в котором реализуете отображение вашей плашки или чего либо еще. Все остальные VC проекта наследуете от общего. Дальше все просто вызывается методами и ничего мудрить не нужно, особенно с либами.


#11

тогда мне нужно иметь доступ ко всем vc, для отображения события? А я хотел централизовать все


#12

Зачем??? Вы все равно не сможете ничего делать в VC, которые не отображаются в данный момент на экране. Вы либо чего-то не понимаете, либо что-то странное придумываете.


#13

Да, я не понимаю)
в моем представление ваша идея привлекательна конечно и проста, но в нем же она не удобна
придется в каждом VC подписываться на события.


#14

Ты берешь рут контроллер у window


#15

Это понятно!!
А на модальных как?!?!?!?!))))


#16

модальные что? Контроллеры? Так это такие же UIViewController. Какая разница?


#17

Они уже находятся в стеке VC)

ладно, посмотрю еще)


#18

главней всех Window. У него есть rootViewcontroller.


#19

Да) Но RootVC Это контроллер табл-бара)

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.makeKeyAndVisible()
        
        BaseService.authRef.rx
            .stateDidChange
            .subscribe(onNext: {
                if $0 == nil {
                    self.toAuth()
                } else {
                    BaseService.usersRef.child($0!.uid).rx
                        .observeSingleEvent(.value)
                        .map{UserModel(data: $0.value)}
                        .subscribe(onNext: {
                            if $0 == nil {
                                self.toAuth()
                            } else {
                                self.im = $0!
                                self.toTabbar()
                            }
                        })
                }
            })
        
        launchScreen()
        return true
    }

Соотвественно в toAuth() и toTabbar() инициализируется rootVC
Но если я перехожу на модальное окно, то оно не становится rootVC))) оно идет в navigationStack на сколько я понимаю и там скорее нужно обращаться в topVC()

Поэтому еще гляну) Сейчас немножко другим занялся, отложил, а так RexHunt кинул хорошую идею, может extension сделать для VC и на уровне приложения связать с observer)

В общем подумать нужно!)


#20

Разницы нет. Если надо на модальном показать - так же берешь и у модального контроллера у вью вызываешь нужный метод. Просто ты задачу сформулировал для меня непонятно. :thinking: