Chcę użyć metody addSubview, aby dodać nowy widok na moim ekranie. Jednak nowy widok musi również zawierać pasek nawigacji itp., co oznacza, że ​​powinien obejmować cały ekran. Co powinienem zrobić?

Za każdym razem, gdy próbuję dodać Subview, zawsze pokazuje nowy widok pod paskiem nawigacyjnym.

Nie chcę używać pushViewController lub presentModelViewController, ponieważ nowy dodany widok będzie miał niską krycie i widzę tło, ale nie chcę wchodzić w interakcje z obiektami tła, takimi jak tabela przycisków paska itp. Przepraszam za angielski, mam nadzieję, że jasno powiedziałem, co rzecz w tym.

5
Nacrug 25 lipiec 2011, 17:25

3 odpowiedzi

Najlepsza odpowiedź

Po prostu ustaw właściwość frame widoku, który dodałeś wcześniej, i ustaw ją z granicami ekranu.

[myView setFrame:[[UIScreen mainScreen] bounds];
[self.navigationController.view addSubview:myView];

Jeśli chcesz wyłączyć interakcję z paskiem nawigacyjnym:

[self.navigationController.navigationBar setUserInteractionEnabled:NO];
17
25 lipiec 2011, 18:11
1
Nie działało, nadal nie zakrywając paska nawigacyjnego. cały ekran z wyjątkiem nawigacji i pasków stanu
 – 
Nacrug
25 lipiec 2011, 17:35
Kto jest odbiorcą addSubview: w Twojej implementacji?
 – 
user756245
25 lipiec 2011, 17:47
Ach mój błąd, próbowałem dodać subview na self.view. to rozwiązało mój problem. Jednak, mimo że nowy widok obejmuje pasek nawigacji, współdziała z przyciskiem paska nawigacji. Czy jest jakaś szansa na odcięcie interakcji, czy też powinienem programowo wyłączyć wszystkie przyciski, tabele itp. za każdym razem, gdy dodam widok podrzędny?
 – 
Nacrug
25 lipiec 2011, 18:08
Dziękuję Ci bardzo. Muszę programowo wyłączyć wszystkie interakcje po dodaniu podwidoku. dzięki jeszcze raz : )
 – 
Nacrug
25 lipiec 2011, 18:16
To rozwiązanie zadziałało dla mnie. Ale musiałem dodać tę linię -> myView.layer.zPosition = 1000
 – 
Jiří Zahálka
24 sierpień 2015, 15:24

Możesz przyjrzeć się dodaniu kolejnego UIWindow nad twoim oknem głównym.

1
Cyrille 25 lipiec 2011, 18:10

Kiedy próbowałem wykonać nawigacjęController.view addSubview, nie zakryłby mojego paska kart, więc wykonałem następujące czynności w oknie delegata mojej aplikacji:

[self.window addSubview:myView];

Jeśli potrzebujesz dostępu do swojego appDelegate z innej klasy, po prostu zaimportuj delegata aplikacji i wywołaj go z tego.

0
kevinl 6 luty 2014, 01:05