self.tableview reloadData, вызывающее сбой в UITableView - PullRequest
0 голосов
/ 16 октября 2010

Я получаю этот сбой при выборе строки: '- [__ NSCFArray objectAtIndex:]: index (1) за пределами (1)',

Я переместил данные из viewWillAppear, потому что мы, хотяэто было причиной аварии.Теперь я загружаю его на ViewDidLoad.

Однако, если [self.tableview reloadData];включен, я получаю эту аварию.

Идеи?

  -(void) loadData3;{

    MyAppDelegate *AppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
self.tableDataSource3 = [AppDelegate.data3 objectForKey:@"Rows"];
NSLog(@"AppDelegate.data3 : %@",AppDelegate.data3 );
NSLog(@"self.tableDataSource3 : %@",self.tableDataSource3 );

}

- (void)viewDidLoad {
    [super viewDidLoad]; 
    [self loadData3];
    if(CurrentLevel3 == 0) {
    self.navigationItem.title = @"Families I Follow";
}
else 
    self.navigationItem.title = CurrentTitle3;  
}
}


-(void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear: animated];
            [self.tableview reloadData];
}

Ответы [ 3 ]

1 голос
/ 16 октября 2010

Скорее всего, вы меняете массив, который загружает UITableView во время его отображения, поэтому при нажатии на строку строка больше не существует в массиве.Поэтому ошибка выхода за пределы массива.

1 голос
/ 29 января 2012
 - (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.tableView reloadData];
}

Перемещение reloadData в viewDidAppear решает эту проблему.

0 голосов
/ 16 октября 2010

Поскольку это происходит при выборе строки, ошибка наиболее вероятна в ваших методах tableView:didSelectRowAtIndexPath: или tableView:willSelectRowAtIndexPath:.Ничто не кажется по сути неправильным с фрагментом кода viewWillAppear:, который вы опубликовали.

...