在storyboard中的静态UITableView中拖入 UISearchBar and Search Display Controller出现的奇怪问题
来源:互联网 发布:淘宝上买cpu可靠吗 编辑:程序博客网 时间:2024/05/29 12:31
最近学习过程中想模拟一下新浪微博“发现”界面。
我在storyboard中拖入一个UITableViewController,设置这个UITableViewController的TableView为Static Cells,然后添加了两个Section,每个Section两行Cell。
接下来往这个TableView中拖入了一个UISearchBar and Search Display Controller,storyboard中的结构如下图:
然后在UITableViewController对应的WBDiscoverTableViewController.m中实现相关的协议方法。代码如下:
#import"WBDiscoverTableViewController.h"
@interfaceWBDiscoverTableViewController ()
@property (weak,nonatomic)IBOutletUISearchBar *mySearchbar;
@property (nonatomic,strong)NSArray *results;
@property (weak,nonatomic)IBOutletUITableViewCell *hotTopicsCell1;
@property (weak,nonatomic)IBOutletUITableViewCell *hotTopicsCell2;
@property (weak,nonatomic)IBOutletUITableViewCell *nearbyPeopleCell;
@property (weak,nonatomic)IBOutletUITableViewCell *nearbyWeiboCell;
@end
@implementation WBDiscoverTableViewController
- (void)viewDidLoad {
@interfaceWBDiscoverTableViewController ()
@property (weak,nonatomic)IBOutletUISearchBar *mySearchbar;
@property (nonatomic,strong)NSArray *results;
@property (weak,nonatomic)IBOutletUITableViewCell *hotTopicsCell1;
@property (weak,nonatomic)IBOutletUITableViewCell *hotTopicsCell2;
@property (weak,nonatomic)IBOutletUITableViewCell *nearbyPeopleCell;
@property (weak,nonatomic)IBOutletUITableViewCell *nearbyWeiboCell;
@end
@implementation WBDiscoverTableViewController
- (void)viewDidLoad {
[superviewDidLoad];
staticNSString *cellID =@"resultCell";
[self.searchDisplayController.searchResultsTableViewregisterClass:[UITableViewCellclass]forCellReuseIdentifier:cellID];
}
- (void)viewWillAppear:(BOOL)animated {
}
[self.searchDisplayController.searchResultsTableViewregisterClass:[UITableViewCellclass]forCellReuseIdentifier:cellID];
}
- (void)viewWillAppear:(BOOL)animated {
}
- (void)searchWithString {
switch (self.mySearchbar.selectedScopeButtonIndex) {
case0:
//搜用户
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsUsersWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case1:
//搜学校
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsSchoolsWithString:self.mySearchbar.textAndCount:20AndType:0CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case2:
//搜公司
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsCompaniesWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
default:
break;
}
}
switch (self.mySearchbar.selectedScopeButtonIndex) {
case0:
//搜用户
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsUsersWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case1:
//搜学校
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsSchoolsWithString:self.mySearchbar.textAndCount:20AndType:0CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case2:
//搜公司
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsCompaniesWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
default:
break;
}
}
#pragma mark UISearchBarDelegate
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[selfsearchWithString];
}
[selfsearchWithString];
}
#pragma mark UISearchDisplayDelegate
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"WillBeginSearch....");
}
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"DidBeginSearch....");
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
NSLog(@"WillEndSearch....");
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
NSLog(@"DidEndSearch....");
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[selfsearchWithString];
returnNO;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
[selfsearchWithString];
returnNO;
}
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"WillBeginSearch....");
}
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"DidBeginSearch....");
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
NSLog(@"WillEndSearch....");
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
NSLog(@"DidEndSearch....");
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[selfsearchWithString];
returnNO;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
[selfsearchWithString];
returnNO;
}
#pragma mark - Table view data source
//由于这个控制器既是原来的WBDiscoverTableViewController,又是UISearchDisplayController的searchContentsController。
//WBDiscoverTableViewController的tableView和searchResultsTableView的delegat都指向这个对象(self),
//所以需要在回调中区别到底是哪个tableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView ==self.tableView) {
return2;
} elseif (tableView ==self.searchDisplayController.searchResultsTableView){
return1;
} else
return0;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView ==self.tableView) {
return2;
} elseif (tableView ==self.searchDisplayController.searchResultsTableView) {
returnself.results.count;
} else
return0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView ==self.tableView) {
if (indexPath.section == 0 && indexPath.row == 0) {
returnself.hotTopicsCell1;
} elseif (indexPath.section == 0 && indexPath.row == 1) {
returnself.hotTopicsCell2;
} elseif (indexPath.section == 1 && indexPath.row == 0) {
returnself.nearbyPeopleCell;
} else {
returnself.nearbyWeiboCell;
}
} elseif (tableView ==self.searchDisplayController.searchResultsTableView) {
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"resultCell"];
id result =self.results[indexPath.row];
if ([resultisMemberOfClass:[WBSearchSuggestionsOfUsersclass]]) {
WBSearchSuggestionsOfUsers * suggestion = result;
cell.textLabel.text = suggestion.nickName;
cell.detailTextLabel.text = suggestion.followersCount;
} elseif ([resultisMemberOfClass:[WBSearchSuggestionsOfSchoolsclass]]) {
WBSearchSuggestionsOfSchools *suggestion = result;
cell.textLabel.text = suggestion.schoolName;
cell.detailTextLabel.text = suggestion.location;
} else {
WBSearchSuggestionsOfCompanies *suggestion = result;
cell.textLabel.text = suggestion.suggestion;
}
return cell;
} else
returnnil;
}
//由于这个控制器既是原来的WBDiscoverTableViewController,又是UISearchDisplayController的searchContentsController。
//WBDiscoverTableViewController的tableView和searchResultsTableView的delegat都指向这个对象(self),
//所以需要在回调中区别到底是哪个tableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView ==self.tableView) {
return2;
} elseif (tableView ==self.searchDisplayController.searchResultsTableView){
return1;
} else
return0;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView ==self.tableView) {
return2;
} elseif (tableView ==self.searchDisplayController.searchResultsTableView) {
returnself.results.count;
} else
return0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView ==self.tableView) {
if (indexPath.section == 0 && indexPath.row == 0) {
returnself.hotTopicsCell1;
} elseif (indexPath.section == 0 && indexPath.row == 1) {
returnself.hotTopicsCell2;
} elseif (indexPath.section == 1 && indexPath.row == 0) {
returnself.nearbyPeopleCell;
} else {
returnself.nearbyWeiboCell;
}
} elseif (tableView ==self.searchDisplayController.searchResultsTableView) {
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"resultCell"];
id result =self.results[indexPath.row];
if ([resultisMemberOfClass:[WBSearchSuggestionsOfUsersclass]]) {
WBSearchSuggestionsOfUsers * suggestion = result;
cell.textLabel.text = suggestion.nickName;
cell.detailTextLabel.text = suggestion.followersCount;
} elseif ([resultisMemberOfClass:[WBSearchSuggestionsOfSchoolsclass]]) {
WBSearchSuggestionsOfSchools *suggestion = result;
cell.textLabel.text = suggestion.schoolName;
cell.detailTextLabel.text = suggestion.location;
} else {
WBSearchSuggestionsOfCompanies *suggestion = result;
cell.textLabel.text = suggestion.suggestion;
}
return cell;
} else
returnnil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return10;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UIViewController *vc = [[UIViewControlleralloc]init];
vc.view.backgroundColor = [UIColorwhiteColor];
[self.navigationControllerpushViewController:vcanimated:YES];
return10;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UIViewController *vc = [[UIViewControlleralloc]init];
vc.view.backgroundColor = [UIColorwhiteColor];
[self.navigationControllerpushViewController:vcanimated:YES];
}
@end
当我在UISearchBar中输入关键字进行搜索,如果返回结果的数量(self.results.count)大于2的时候,程序就会崩溃,错误原因:reason: '*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 .. 1]’。
看起来是数组访问越界了,也就是说数组中只有两个对象,但是却访问了index为2的对象,于是程序就崩溃了。检查了代码,并没有什么异常,最后想到是不是静态TableView导致的问题呢?
于是决定将TableView修改为动态的,并修改WBDiscoverTableViewController.m中的代码:
#import"WBDiscoverTableViewController.h"
@interfaceWBDiscoverTableViewController ()
@property (weak,nonatomic)IBOutletUISearchBar *mySearchbar;
@property (nonatomic,strong)NSArray *results;
@end
@implementation WBDiscoverTableViewController
- (void)viewDidLoad {
[superviewDidLoad];
@interfaceWBDiscoverTableViewController ()
@property (weak,nonatomic)IBOutletUISearchBar *mySearchbar;
@property (nonatomic,strong)NSArray *results;
@end
@implementation WBDiscoverTableViewController
- (void)viewDidLoad {
[superviewDidLoad];
[self.searchDisplayController.searchResultsTableViewregisterNib:[UINibnibWithNibName:@"WBsearchSuggestionCell"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"WBsearchSuggestionCell"];
[self.tableViewregisterNib:[UINibnibWithNibName:@"hotTopicsCell1"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"hotTopicsCell1"];
[self.tableViewregisterNib:[UINibnibWithNibName:@"hotTopicsCell2"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"hotTopicsCell2"];
[self.tableViewregisterNib:[UINibnibWithNibName:@"nearbyPeopleCell"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"nearbyPeopleCell"];
[self.tableViewregisterNib:[UINibnibWithNibName:@"nearbyWeiboCell"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"nearbyWeiboCell"];
}
[self.tableViewregisterNib:[UINibnibWithNibName:@"hotTopicsCell1"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"hotTopicsCell1"];
[self.tableViewregisterNib:[UINibnibWithNibName:@"hotTopicsCell2"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"hotTopicsCell2"];
[self.tableViewregisterNib:[UINibnibWithNibName:@"nearbyPeopleCell"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"nearbyPeopleCell"];
[self.tableViewregisterNib:[UINibnibWithNibName:@"nearbyWeiboCell"bundle:[NSBundlemainBundle]]forCellReuseIdentifier:@"nearbyWeiboCell"];
}
- (void)searchWithString {
switch (self.mySearchbar.selectedScopeButtonIndex) {
case0:
//搜用户
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsUsersWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case1:
//搜学校
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsSchoolsWithString:self.mySearchbar.textAndCount:20AndType:0CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case2:
//搜公司
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsCompaniesWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
default:
break;
}
}
switch (self.mySearchbar.selectedScopeButtonIndex) {
case0:
//搜用户
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsUsersWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case1:
//搜学校
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsSchoolsWithString:self.mySearchbar.textAndCount:20AndType:0CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
case2:
//搜公司
if ([[NSUserDefaultsstandardUserDefaults]objectForKey:@"accessToken"]) {
[[WBWeiboAPIshareWeiboApi]searchSuggestionsCompaniesWithString:self.mySearchbar.textAndCount:20CompletionCallBack:^(id obj) {
self.results = obj;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"self.results.count :%ld", self.results.count);
[self.searchDisplayController.searchResultsTableViewreloadData];
});
}];
}
break;
default:
break;
}
}
#pragma mark UISearchBarDelegate
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[selfsearchWithString];
}
#pragma mark UISearchDisplayDelegate
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"WillBeginSearch....");
}
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"DidBeginSearch....");
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
NSLog(@"WillEndSearch....");
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
NSLog(@"DidEndSearch....");
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[selfsearchWithString];
returnNO;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
[selfsearchWithString];
returnNO;
[selfsearchWithString];
}
#pragma mark UISearchDisplayDelegate
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"WillBeginSearch....");
}
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
NSLog(@"DidBeginSearch....");
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
NSLog(@"WillEndSearch....");
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
NSLog(@"DidEndSearch....");
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[selfsearchWithString];
returnNO;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
[selfsearchWithString];
returnNO;
}
#pragma mark - Table view data source
//由于这个控制器既是原来的WBDiscoverTableViewController,又是UISearchDisplayController的searchContentsController。
//WBDiscoverTableViewController的tableView和searchResultsTableView的delegat都指向这个对象(self),
//所以需要在回调中区别到底是哪个tableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView ==self.tableView) {
return2;
} elseif (tableView ==self.searchDisplayController.searchResultsTableView){
return1;
} else
return0;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView ==self.tableView) {
return2;
} elseif (tableView ==self.searchDisplayController.searchResultsTableView) {
returnself.results.count;
} else
return0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView ==self.tableView) {
if (indexPath.section == 0 && indexPath.row == 0) {
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"hotTopicsCell1"forIndexPath:indexPath];
return cell;
} elseif (indexPath.section == 0 && indexPath.row == 1) {
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"hotTopicsCell2"forIndexPath:indexPath];
return cell;
} elseif (indexPath.section == 1 && indexPath.row == 0) {
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"nearbyPeopleCell"forIndexPath:indexPath];
return cell;
} else {
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"nearbyWeiboCell"forIndexPath:indexPath];
return cell;
}
} elseif (tableView ==self.searchDisplayController.searchResultsTableView) {
WBsearchSuggestionCell *cell = [tableViewdequeueReusableCellWithIdentifier:@"WBsearchSuggestionCell"forIndexPath:indexPath];
id result =self.results[indexPath.row];
if ([resultisMemberOfClass:[WBSearchSuggestionsOfUsersclass]]) {
WBSearchSuggestionsOfUsers * suggestion = result;
cell.suggestion.text = suggestion.nickName;
} elseif ([resultisMemberOfClass:[WBSearchSuggestionsOfSchoolsclass]]) {
WBSearchSuggestionsOfSchools *suggestion = result;
cell.suggestion.text = suggestion.schoolName;
} else {
WBSearchSuggestionsOfCompanies *suggestion = result;
cell.suggestion.text = suggestion.suggestion;
}
return cell;
} else
returnnil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return10;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPathanimated:YES];
UIViewController *vc = [[UIViewControlleralloc]init];
vc.view.backgroundColor = [UIColorwhiteColor];
[self.navigationControllerpushViewController:vcanimated:YES];
}
@end
测试,问题解决了!
但是仍然心存疑问,为什么静态TableView会影响UISearchBar and Search Display Controller中 searchResultsTableView的cell?
0 0
- 在storyboard中的静态UITableView中拖入 UISearchBar and Search Display Controller出现的奇怪问题
- search Bar and Search Display Controller的使用
- UITableview在iOS11中出现的问题
- ios 中使用 Search Display Controller 来对 UITableView 进行前台查询
- UITableView中奇怪的问题真不少!
- storyboard中出现的问题
- UITableView在重绘时出现问题
- rails在windows下调用命令行出现的奇怪问题
- THINKPHP3.2在MAC上出现的奇怪问题
- UISearchBar 光标不出现的问题
- rename 出现的奇怪问题
- 关于在UIScrollView上添加UITableView出现的问题【原理】
- Ext4的direct+grid+RowEditing在ie中的奇怪问题
- 在debug中的g命令发现的奇怪问题
- 在SQL脚本中的注释引起的奇怪问题
- UISearchDisplayController 与 UISearchBar 在IOS7的问题
- 在 Xcode 5 的 Storyboard 中使用 UITableView
- storyboard中tab bar controller更改item的位置问题
- CSS中几个与换行有关的属性简明总结_css3_CSS_网页制作
- MySQL 系统架构 说明
- IOS开发—UITableViewCell的四种类型
- java基础
- 结构体
- 在storyboard中的静态UITableView中拖入 UISearchBar and Search Display Controller出现的奇怪问题
- Android 下拉刷新框架实现
- SAT数学题常用符号介绍
- hive中求top k的两种方式
- GRE写作:十字坐标定位法
- add ssh-key to github
- [Python]网络爬虫(十):一个爬虫的诞生全过程(以山东大学绩点运算为例)
- Linux 下 MySQL 启动与关闭 说明
- request response 编码设置