嗨,我是Xcode编程的新手,在创建UITableView
时我有点困惑。
我正在阅读许多教程,并且我已经创建了TableViewController
的子类。
我已经有一个UIViewController
,其中包含一个内部有UITableView
的xib文件。
我在TableViewController
子类中实现了必要的方法,但我不知道display在屏幕上显示TableView
的方式。
我尝试将表委托设置为TableViewController
,但表格未显示,并且IBOutlet
已将UITableView
链接到我的- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
}
FichaItem * item = [sucursales objectAtIndex:indexPath.section];
cell.textLabel.text = [item.campos objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [item.datos objectAtIndex:indexPath.row];
return cell;
}
上的属性。
请有人告诉我我做错了什么。
抱歉我的英文不好
编辑: 非常感谢您的帮助
以下是该方法的代码:
{{1}}
我真的看不出有什么问题,代码几乎被复制和修改以显示我的数据。
答案 0 :(得分:0)
有多种方法可以实现这一目标。
方式1 (我这样做):
打开viewController.h并继承UITableViewDelegate和UITableViewDataSource协议。这看起来像这样:@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
然后打开XIB,将UITableView对象拖到视图中并将其挂起:右键单击 - 从tableView拖动到左侧的文件所有者对象。选择Delegate并将其重做为dataSource。
然后您只需要实现委托方法。您不需要继承UITableViewController
方式2
子类UITableViewController。 将UITableView拖到视图中,并向XIB添加“对象”。然后将其类设置为tableViewController子类,并将其与tableView挂钩。
可能还有其他几种方法可以做到。但这些是我熟悉的方式。
修改强> 的 以下是一个委托方法的示例实现。
NSArray *dataSource = @[@{@"title": @"myTitle", @"subtitle": @"mySubTitle"}, @{@"title": @"some other title", @"subtitle": @"some explanation"}];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reusableCell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"reusableCell"];
}
// dataSource is an NSArray of NSDictionaries
[[cell textLabel] setText:[[dataSource objectAtIndex:[indexPath row]] objectForKey:@"title"]];
[[cell detailTextLabel] setText:[[dataSource objectAtIndex:[indexPath row]] objectForKey:@"subtitle"]];
return cell;
}