我有一个实现4个委托的UIViewController:
@interface AllProductsVC : UIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, UISearchDisplayDelegate>{
NSArray *array;
NSMutableArray *searchData;
UISearchBar *searchBar;
UISearchDisplayController *searchDisplayController;
}
@property int numberOfProducts;
@property int productsToLoad;
@property(nonatomic, retain) UITableView *productsTableView;
@property(nonatomic, retain) UISegmentedControl *segmentedControl;
-(IBAction)getProducts;
@end
我的问题是viewcontroller有一个segmentedControl。 在搜索过程中,如果单击segmentedControl,则视图不会显示导航控制器违反用户与应用程序交互的其他时间。
我试图在搜索过程中隐藏segmentedControl,直到你更改了segmentControl才有效,如果你在搜索没有隐藏之后更改它(搜索之前),我尝试了同样的启用但结果相同。
有没有办法不隐藏导航控制器?我试图搜索结果并在stackoverflow上找到其他问题,但对我没有帮助。
祝你好运
答案 0 :(得分:9)
我解决了使用自定义类创建UISearchDisplayController的问题:
CustomSearchDisplayController.h
#import <UIKit/UIKit.h>
@interface CustomSearchDisplayController : UISearchDisplayController
@end
CustomSearchDisplayController.m
#import "MySearchDisplayController.h"
@implementation CustomSearchDisplayController
- (void)setActive:(BOOL)visible animated:(BOOL)animated
{
if(self.active == visible) return;
[self.searchContentsController.navigationController setNavigationBarHidden:YES animated:NO];
[super setActive:visible animated:animated];
[self.searchContentsController.navigationController setNavigationBarHidden:NO animated:NO];
if (visible) {
[self.searchBar becomeFirstResponder];
} else {
[self.searchBar resignFirstResponder];
}
}
@end
在我首先以编程方式创建搜索栏的ViewController上导入CustomSearchDisplayController.h
我将搜索栏定义为CustomSearchDisplayController
而不是UISearchDisplayController
。