【问题标题】:How do I make a table view redisplay如何重新显示表格视图
【发布时间】:2010-11-29 21:25:51
【问题描述】:

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

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

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

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

[self.tableView reloadData];

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

我也尝试过简单地添加

[self refresh];

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

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

【问题讨论】:

  • 如果 [self refresh] 是要走的路,我相信我可以通过从我的 viewWillAppear 方法中删除对正在执行它的方法的调用来阻止循环的发生。请告诉我。

标签: iphone uitableview reload


【解决方案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];
}

【讨论】:

  • 非常感谢。我对这一切都很陌生,甚至没有想过简单地添加一个出口到桌子上告诉它重新显示。完美答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多