-4

嗨,我是 Xcode 编程新手,在创建UITableView.

我正在阅读很多教程,并且我创建了一个TableViewController.

我已经有一个UIViewController带有 xib 的文件,UITableView里面包含一个。

我已经在TableViewController子类中实现了必要的方法,但我不知道如何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;
}

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

4

1 回答 1

0

有多种方法可以实现这一目标。

方式1 (我正在这样做)

打开 viewController.h 并继承 UITableViewDelegate 和 UITableViewDataSource 协议。这看起来像这样:@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

然后打开 XIB,将一个 UITableView 对象拖到您的视图中并将其连接起来:右键单击并从 tableView 拖动到左侧的文件所有者对象。选择 Delegate 并为 dataSource 重做它。

然后你只需要实现委托方法。你不需要继承 UITableViewController

方式二

子类 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;
}
于 2013-04-18T09:40:21.487 回答