Я отлаживал приложение для iphone и нашел что-то интересное.
У меня есть UIViewControllers с TabBarcontroller (6 вкладок). Каждая вкладка является UIViewController и имеет UITtableview. ViewDidLoad работает и приносит исходные данные. На UITableView есть панель поиска. После того, как пользователь нажимает кнопку поиска, происходит какое-то волшебство, и я получаю массив с данными. Я не могу видеть новые данные в табличном представлении, и [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;
}