0

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

我将控制器和笔尖之间的所有东西都连接起来,并使文件的所有者连接到 UIView 和数据源,并委托 UIView 包含的 UITableView 来引用文件的所有者,一切正常。

但我不知道如何告诉表格视图刷新。

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

[self.tableView reloadData];

但除非我的二级控制器是 UITableViewController,否则这行代码将无法编译。当我将第二级控制器设置为 UITableViewController 时,当第二级控制器加载时,我的应用程序会崩溃,因为文件的所有者没有引用表视图控制器,并且当我让文件的所有者引用表视图出口而不是视图,除了底部的工具栏及其标签和刷新按钮不再出现之外,一切正常。

我也尝试简单地添加

[self refresh];

代替 [self.tableview reloadData] 但代码陷入循环刷新自身。

我怎样才能让这一切正常工作?我想我需要将我的二级控制器保留为 UIViewcontroller,但我仍然希望能够获取它包含的 UITableView,以便在我想要的时候进行自我更新。

4

1 回答 1

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];
}
于 2009-09-20T15:44:56.647 回答