我有一个导航iPhone应用程序,它的“二级”控制器目前是一个UIViewController,其Nib包含一个UIView。我在UIView的顶部创建了一个用于导航栏的空间,然后我在底部添加了一个工具栏,我在其上放置了一个刷新按钮,一个标签和一个活动指示器。最后,但并非最不重要的是,我在中间放了一个表视图。
我连接了控制器和nib之间的所有内容,并使文件所有者连接到UIView和数据源,并委托UIView包含的UITableView来引用文件的所有者,一切正常。
但我无法弄清楚如何告诉表视图刷新。
我想我可以把它放在我希望表更新的代码中:
[self.tableView reloadData];
但除非我的第二级控制器是UITableViewController,否则该行代码将无法编译。当我将我的第二级控制器设置为UITableViewController时,我的应用程序在第二级控制器被加载时爆炸,因为文件的所有者没有引用表视图控制器,当我使文件的所有者引用表视图出口而不是视图,除了我的工具栏在底部,以及它的标签和刷新按钮不再出现的事实以外的事情。
我也试过简单地添加
[self refresh];
代替[self.tableview reloadData],但代码卡在循环刷新中。
我怎样才能让这一切都有效?我想我需要将我的第二级控制器保留为UIViewcontroller但我仍然希望能够获得它包含的UITableView以便在我想要的时候更新自己。
答案 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];
}