如何在iphone / iPad中刷新UITableViewController

时间:2011-10-07 06:34:16

标签: iphone ipad uitableview

 -(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]获取来自Web服务的记录。现在我在同一视图中的uitoolbar中有一个按钮来更新列表。我正在调用reloadView方法来刷新List,但它会调用numberOfRowsInSectionviewDidLoad方法,但不会调用cellForRowAtIndexPath方法。但是当我转到其他屏幕并再次回来时,它会从开始刷新我的List

可能是什么原因?请帮助我成为iPad开发的新手。我正在iPad上做这一切。

非常感谢

EDITED

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

3 个答案:

答案 0 :(得分:0)

可能是你的data.count是0吗?如果有一些数据,它应该在[[self tableView] reloadData];

之后调用cellForRowAtIndexPath

答案 1 :(得分:0)

在另一个单独的方法-(void)refreshData中执行刷新代码,然后在-viewDidLoad或按下按钮时随时调用此方法......

答案 2 :(得分:0)

尝试从

调用 - (void)reloadView
-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated];
    [self reloadView];
}