如何使表格视图重新显示

时间:2009-09-20 15:32:36

标签: iphone uitableview reload

我有一个导航iPhone应用程序,它的“二级”控制器目前是一个UIViewController,其Nib包含一个UIView。我在UIView的顶部创建了一个用于导航栏的空间,然后我在底部添加了一个工具栏,我在其上放置了一个刷新按钮,一个标签和一个活动指示器。最后,但并非最不重要的是,我在中间放了一个表视图。

我连接了控制器和nib之间的所有内容,并使文件所有者连接到UIView和数据源,并委托UIView包含的UITableView来引用文件的所有者,一切正常。

但我无法弄清楚如何告诉表视图刷新。

我想我可以把它放在我希望表更新的代码中:

[self.tableView reloadData];

但除非我的第二级控制器是UITableViewController,否则该行代码将无法编译。当我将我的第二级控制器设置为UITableViewController时,我的应用程序在第二级控制器被加载时爆炸,因为文件的所有者没有引用表视图控制器,当我使文件的所有者引用表视图出口而不是视图,除了我的工具栏在底部,以及它的标签和刷新按钮不再出现的事实以外的事情。

我也试过简单地添加

[self refresh];

代替[self.tableview reloadData],但代码卡在循环刷新中。

我怎样才能让这一切都有效?我想我需要将我的第二级控制器保留为UIViewcontroller但我仍然希望能够获得它包含的UITableView以便在我想要的时候更新自己。

1 个答案:

答案 0 :(得分:1)

为什么你的二级控制器不能成为UITableViewController?它是UIViewController的一个子类,所以你不会丢失任何功能。

无论如何,非UITableViewController UIViewController类没有可以调用的tableView属性。您应该在自己的ivar中保持表视图并调用它。 (你甚至可以称之为tableView;你只需要自己定义它。)

@interface MyViewController : UIViewController {
    UITableView *tableView;
}

@property(nonatomic,retain) IBOutlet UITableView *tableView;

- (void)myMethod;

@end
@implementation MyViewController

@synthesize tableView;

- (void)myMethod {
    [self.tableView reloadData];
}