Requirements: Uisearchbar the Cancel button, there is no public method to modify its properties. But we can still set the "Cancel button" by traversing Uisearchbar's child controls.
effect: Change the "Cancel" text in the Uisearchbar Cancel button to "search".
The code is as follows:
-(void) Setsearchbar: (Uisearchbar *) searchbar{
Uisearchbar *searchbar = [[Uisearchbar alloc] Initwithframe:cgrectmake (0, 0, Kscreenwidth, 44)];
[Searchbar Setshowscancelbutton:yes]; //Show right Cancel button (required)
/*1. Traverse Uisearchbar's child control, find Uinavgationbutton in "Level two child control", which is the "Cancel button" we want to change;
2. Get Uinagationbar (inherit from UIButton) and modify its properties;
*/
For (UIView *view in [[Searchbar.subviews Lastobject] subviews]) {
if ([View Iskindofclass:[uibutton class]]) {
UIButton *cancelbtn = (UIButton *) view;
[Cancelbtn settitle:@ "search" forstate:uicontrolstatenormal]; //Key steps
}
}
[Self.view Addsubview:searchbar];
}
Effect:
Thanks to Stack Overflow's share of Jason.
Custom Uisearchbar "Cancel button"