我有一个包含两个TableView的笔尖。表视图与我创建的同一个类是UITableViewController的子类。我相信一切都是正确的。但是,当我将UITableView设置为UITableViewController然后运行
[uitableviewcontrollervariablename reloadData];
我首先得到一个警告,该类可能无法响应reloadData。我以为所有UITableViewControllers都有一个reloadData类?
我试图错误地连接这些项目?
使用代码更新 TopicViewController.h
@interface TopicViewController : UIViewController {
NSInteger topicID;
Topic *topic;
IBOutlet ThoughtTableViewController *featured;
}
@property (retain) Topic *topic;
@property (readonly) NSInteger topicID;
@property (retain) IBOutlet ThoughtTableViewController *featured;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil ID:(NSInteger)ID;
@end
TopicViewController.m
@implementation TopicViewController
@synthesize topic;
@synthesize topicID;
@synthesize featured;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil ID:(NSInteger)ID {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
topicID = ID;
}
return self;
}
- (void)dealloc {
[topic release];
[super dealloc];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
topic = [[Topic alloc] initWithID:topicID];
NSArray *thoughts = [topic getFeaturedThoughts];
featured = [[ThoughtTableViewController alloc] initWithStyle:UITableViewStylePlain thoughts:thoughts];
[self.featured.tableView reloadData];
}
@end
答案 0 :(得分:8)
你的连接很好......你只需要在TableView类上调用该方法,而不是控制器:
[uitableviewcontrollervariablename.tableView reloadData];
编辑:10/20/09
很难看到发生了什么,因为你使用IB而不是以编程方式添加表格,但是连接应该是这样的:
下面是一些代码作为示例,如何以编程方式执行:
@interface WhateverController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
…
UITableView *tableView1;
UITableView *tableView2;
}
@end
-
@implementation WhateverController
…
- (void)loadView {
[super loadView];
tableView1 = [[UITableView alloc] initWithFrame:CGRectMake(YOUR_FRAME_1)];
tableView2 = [[UITableView alloc] initWithFrame:CGRectMake(YOUR_FRAME_2)];
tableView1.delegate = self;
tableView2.delegate = self;
tableView1.dataSource = self;
tableView2.dataSource = self;
[self.view addSubview:tableView1];
[self.view addSubview:tableView2];
}
-
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == tableView1) {
// return a cell using the data for tableView1
} else if (tableView == tableView2) {
// return a cell using the data for tableView2
}
}
因此,您将添加填充2个tableView所需的所有UITableViewDelegate方法和UITableViewDataSource方法。如果要重新加载数据:
[tableView1 reloadData];
[tableView2 reloadData];