Как обновить UITableView с текущего экрана - PullRequest
0 голосов
/ 06 октября 2011

Я использую UITableView внутри UINavigationController.

На первом экране у меня есть табличное представление с именами, Ален, Джон, Смит.и они 3 записи.Теперь я перешел на второй экран и обновляю имена всех трех записей из базы данных.В моем первом контроллере, где отображается UITableView, я использовал [seld.tableView reloadData] в методе делегата viewWillApear.и всякий раз, когда я возвращаюсь к этому первому экрану, мой viewWIllApear делегат вызывает метод, а мой UITableView обновляется.

Теперь проблема в том, что я вызываю [self.tableview reloadData] из моего собственного метода, а не из viewWIllApear.он вызывает мой метод ViewDidLoad, но он не вызывает моих делегатов uitableView для обновления моих записей.ПОЖАЛУЙСТА, любой может помочь, как я могу обновить свой tableView, оставаясь на том же экране.?

Большое спасибо

РЕДАКТИРОВАНИЕ:

 - (void)viewDidAppear:(BOOL)animated {
        [activityIndicator stopAnimating];
        [self.tableView reloadData];
        [super viewDidAppear:animated];
    }

Это мой метод ViewDidappear.я хочу, чтобы всякий раз, когда я нажимал на любую кнопку, оставшуюся на том же экране UITableView, он должен перезагружать мой tableView, а не в каких-либо изменениях в массиве данных или нет.

Ответы [ 3 ]

0 голосов
/ 06 октября 2011

Пример A: Вы создаете свою кнопку или все остальное может вызвать действие в конструкторе интерфейса.Внутри viewController, который содержит табличное представление, используйте метод, подобный следующему:

- (IBAction)updateTable:(id)sender
{
    [self.tableview reloadData];
}

Очевидно, что вы должны соединить розетку с действием в IB.

Пример B: Вы создаете свою кнопку программно.

// inside your loadView or viewDidLoad method
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
       action:@selector(updateTable)
forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(x,y,width,hieght);
[yourView addSubview:button];

В вашем ViewController:

-(void)updateTable
{
   [self.tableView reloadData];
}
0 голосов
/ 06 октября 2011

Если ваши UITableViewDelegate методы не начинаются, то либо ваша tableView розетка не установлена, либо tableView не имеет delegate.Поскольку у вас, кажется, есть несколько контроллеров представления (один с tableView, другой с UIButtons), вы должны также рассмотреть, как лучше всего взаимодействовать между контроллером представления - передавая tableView (нарушает инкапсуляцию, поэтому не очень хорошо), черезвызов метода делегата / протокола через NSNotification или другими подходящими средствами.

0 голосов
/ 06 октября 2011

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

возможно, вам следует создать метод для tableViewController, а затем вызвать его с помощью кнопки.Пожалуйста, покажите ваш код метода и укажите, в каких файлах находятся методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...