Coc*_*Bee 1 iphone uitableview uiviewcontroller uisearchbar tableview
我一直在调试我的iPhone应用程序,发现了一些有趣的东西.
我有一个带TabBarcontroller的UIViewControllers(6个标签).每个选项卡都是一个UIViewController,它有一个UITtableview.viewDidLoad工作并带来初始数据.在UITableView上有一个搜索栏.在用户触摸按下搜索后,一些魔法发生,我得到一个包含数据的数组.我无法在tableview中看到新数据,并且[tableView reloadData]在viewDidLoad之外没有任何影响(第一次).
我可以看到保存数据的数组,dataSource设置为self.然而,没有显示数据!
所以我试过[self.tableView reloadData]和[self.tableView setNeedsDisplay]
有趣的是,新数据没有显示出来.但是,如果我向上或向下移动表,则会触发cellForRowAtIndexPath并且第一行显示数据.
任何人都可以对这个谜团有所了解吗?
如果有[self.view刷新屏幕] ??
-(void) viewWillAppear:(BOOL)animated{
[self.tableView reloadData];
[super viewWillAppear:animated];
}
- (void) searchBarSearchButtonClicked:(UISearchBar *)searchBar2 {
[self searchForFullNames];
//NSAssert(tableView, @"Whoops, tableView is Null");
[tableView reloadData];
// hide keyboard
[searchBar2 resignFirstResponder];
}
- (void)viewDidLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:@"search" ofType:@"plist"];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
self.names = dict;
[dict release];
NSArray *array = [[names allKeys] sortedArrayUsingSelector:@selector(compare:)];
self.keys = array;
isSearchOn = NO;
canSelectRow = NO;
self.tableView.scrollEnabled = NO;
[super viewDidLoad];
}
- (void) searchForFullNames {
self.listData = nil;
self.names = nil;
self.keys = nil;
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
NSMutableArray *person = [[NSMutableArray alloc] init];
[person addObject:@"Doe, John"];
[person addObject:@"11234"];
[person addObject:@"11/22/75"];
[dict setObject:person forKey:@"Person 1"];
person = [[NSMutableArray alloc] init];
[person addObject:@"Doe, Mary"];
[person addObject:@"4321"];
[person addObject:@"11/22/85"];
[dict setObject:person forKey:@"Person 2"];
person = [[NSMutableArray alloc] init];
[person addObject:@"Doe, John"];
[person addObject:@"336655"];
[person addObject:@"10/22/84"];
[dict setObject:person forKey:@"Person 3"];
self.names = dict;
[dict release];
NSArray *array = [[names allKeys] sortedArrayUsingSelector:@selector(compare:)];
self.keys = array;
isSearchOn = NO;
canSelectRow = YES;
}
Run Code Online (Sandbox Code Playgroud)
UISearchDisplayController有自己的tableView属性,名为searchResultsTableView.如果您使用的是searchDisplayController,请尝试使用:
[searchDisplayController.searchResultsTableView reloadData];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5752 次 |
| 最近记录: |