Jak mogę usunąć UITabBarItem
z UITabBar
?Usuń UITabBarItem
Nie próbowałem niczego, ponieważ nie znalazłem nic z wyszukiwań w Google lub dokumentacji dla UITabBar
, UITabBarController
lub UITabBarItem
.
Z góry dzięki! :)
Jak mogę usunąć UITabBarItem
z UITabBar
?Usuń UITabBarItem
Nie próbowałem niczego, ponieważ nie znalazłem nic z wyszukiwań w Google lub dokumentacji dla UITabBar
, UITabBarController
lub UITabBarItem
.
Z góry dzięki! :)
UITabBar ma kolekcję przedmiotów o wartości NSArray. Ponieważ właściwość items to NSArray, a nie NSMutableArray, musisz skonstruować nową NSArray z istniejącej bez obiektu, który chcesz usunąć, a następnie ustawić właściwość items na nową tablicę.
/* suppose we have a UITabBar *myBar, and an int index idx */
NSMutableArray modifyMe = [[myBar items] mutableCopy];
[modifyMe removeObjectAtIndex:idx];
NSArray *newItems = [[NSArray alloc] initWithArray:modifyMe];
[myBar setItems:newItems animated:true];
Pamiętaj, że '- [NSArray mutableCopy]' jest twoim przyjacielem. Nie przeocz też '- [UITabBar setItems: animated:]'. –
http://developer.apple.com jest również twoim przyjacielem;) –
rada Mike Caron za will throw an exception jeśli zamierzasz zmodyfikować umieszczenie zakładek, która należy do kontrolera.
w iOS 3.0 i później, nie należy próba wykorzystania metod i właściwości tej klasy zmodyfikować pasek kart gdy jest on związany z kartą kontrolera bar obiektu. Modyfikowanie paska zakładek w ten sposób powoduje odrzucenie wyjątku. Zamiast tego wszelkie modyfikacje paska tabulacji lub jego pozycji powinny zostać wprowadzone za pośrednictwem interfejsu kontrolera paska tabulacji . Nadal możesz bezpośrednio modyfikować obiekt paska kart, który nie jest powiązany z kontrolerem paska tabulacji .
W takim przypadku self.tabBarItem=nil
usunie go.
W iOS 11, self.tabBarItem = nil sprawia, że tylko miejsce docelowe jest puste, nie przetasowuje elementów, aby wypełnić "usunięty" element. :( –
https://stackoverflow.com/a/9908361/856925 ma odpowiedź, która nadal działa - usuń viewcontroller z listy tabbarcontroller viewcontrollers. –
UWAGA: To wydaje się nie działać w iOS 11. To wciąż dobry w iOS 10.
To straszne umiarkowanie odpowiedź, moim zdaniem, po części dlatego, że to obalenie wytyczne interfejsu człowiek, ale cały to samo wygląda na to, że działa poprawnie:
UITabBar *oldbar = self.tabBarController.tabBar;
UITabBar *newbar = [[UITabBar alloc] initWithFrame:CGRectMake(0,0,oldbar.frame.size.width,oldbar.frame.size.height)];
NSMutableArray *olditems = [[oldbar items] mutableCopy];
[olditems removeObjectAtIndex:0];
NSArray *newitems = [[NSArray alloc] initWithArray:olditems];
[newbar setItems:newitems animated:false];
[oldbar addSubview:newbar];
Układa go czysto na starym pasku i zachowuje funkcjonalność.
Cześć @esquew, co już wypróbowałeś? http://stackoverflow.com/questions/how-to-ask – jcolebrand
Nie próbowałem niczego, ponieważ nie znalazłem nic z wyszukiwań Google ani dokumentacji dla 'UITabBar',' UITabBarController' lub 'UITabBarItem'. – esqew