制作UITableView时出现问题

时间:2013-04-18 09:24:40

标签: iphone ios objective-c xcode

嗨,我是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}}

我真的看不出有什么问题,代码几乎被复制和修改以显示我的数据。

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;
}