2011-08-25 15 views
8

Używam widoku tabeli z UISearchDisplayController w połączeniu z UISearchBar. Pasek wyszukiwania automatycznie ukrywa przycisk anulowania, gdy jest nieodpowiedni, ale używam kontrolera widoku w stanie modalnym - dlatego chciałbym zawsze wyświetlać przycisk anulowania i używać go do otwierania kontrolera widoku modalnego, gdy wyszukiwanie jest anulowane.Zawsze wyświetlaj przycisk anulowania w pasku UISearchBar

Czy istnieje sposób na naciśnięcie przycisku Anuluj, aby pozostać widoczny bez tworzenia niestandardowego paska wyszukiwania?

+0

Co się dzieje, jeśli ustawiony przez wywołanie metody instancji setShowsCancelButton: animowane: – Saran

+0

Ustawianie przycisku widoczny w metodach delegata nie działa, ani nie instacji 'UISearchBar' i przesłanianie wszystko 'metody showCancelButton'. –

Odpowiedz

2

należy użyć pełnomocnikowi wyświetlanego

- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller 
{ 
    controller.searchBar.showsCancelButton = YES; 
} 
+0

Wow ... Kto czuje się głupio, że właśnie odkrył 'showsCancelButton' ...? Ten facet >> – dooleyo

1

to działa

- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller 
{  
    controller.searchBar.showsCancelButton = YES; 
} 
1

znalazłem solution po wyszukaniu dużo.

Obecnie działa dla mnie. Po dodaniu kodu zmieniłem klasę w Konstruktorze interfejsów, aby używać klasy zamiast UISearchBar. Mam również włączony przycisk "Anuluj pokazy".

Kod:

//NoAnimatingSearchBar.h 
@interface NoAnimatingSearchBar : UISearchBar 

@end 

//NoAnimatingSearchBar.m 
#import "NoAnimatingSearchBar.h" 

@implementation NoAnimatingSearchBar 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

- (void) _destroyCancelButton { 
    NSLog(@"_destroyCancelButton"); 
} 

-(void)_setShowsCancelButton:(BOOL)showsCancelButton { 
    NSLog(@"_setShowsCancelButton:(BOOL)showsCancelButton"); 
} 
@end 
+0

Wiem, że ten wątek jest stary, ale wygląda na to, że to rozwiązanie korzysta z prywatnych interfejsów API i prawdopodobnie spowoduje odrzucenie aplikacji podczas przeglądu aplikacji. –

Powiązane problemy