Как обновить UITableViewController в iphone / iPad - PullRequest
0 голосов
/ 07 октября 2011
 -(void)reloadView{
    NSLog(@"IN RELOAD VIEW ");
    [[self tableView] reloadData];
  }


  - (void)viewDidLoad {
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
    [self navigationItem].rightBarButtonItem = barButton;

    [activityIndicator startAnimating];

    [self callStudentsWebService];
    [super viewDidLoad];
    self.clearsSelectionOnViewWillAppear = NO;
    self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
    [self setTitle:@"Students"];

    self.navigationController.toolbarHidden = NO;
    self.navigationController.toolbar.barStyle = UIBarStyleBlack;
     UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithTitle:@"Add Student"        style:UIBarButtonItemStyleBordered target:self action:@selector(addStudent)];
    UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    UIBarButtonItem *import =  [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemOrganize target:self action:@selector(addStudent)];
    NSArray* toolbarItems = [NSArray arrayWithObjects:add,flexible,import, nil];
    self.toolbarItems = toolbarItems;
  }

Выше мой код в классе, который является подклассом UITableViewController.Теперь моя проблема в том, что когда я впервые захожу на экран, он получает записи из веб-сервиса по методу [self callStudentsWebService].Теперь у меня есть кнопка в uitoolbar в том же представлении, которая обновляет список.Я вызываю метод reloadView для обновления List, но он вызывает методы numberOfRowsInSection и viewDidLoad, но не вызывает метод cellForRowAtIndexPath.Но когда я перехожу на другой экран и возвращаюсь снова, он обновляет List с самого начала.

В чем может быть причина ??Пожалуйста, помогите, я новичок в разработке iPad.И я делаю все это в iPad.

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

EDITED

@interface StudentsList : UITableViewController {
DetailViewController *detailViewController;
UIToolbar *toolbar;
UIActivityIndicatorView *activityIndicator;
}

Ответы [ 3 ]

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

Выполните код обновления в другом отдельном методе -(void)refreshData, затем вызывайте его, когда хотите, например, в -viewDidLoad или при нажатии кнопки ...

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

Попробуйте вызвать - (void) reloadView из

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated];
    [self reloadView];
}
0 голосов
/ 07 октября 2011

Может быть, ваш data.count равен 0? Если есть какие-то данные, он должен вызвать cellForRowAtIndexPath после [[self tableView] reloadData];

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