0

我在 XIB 内的 uiviewcontroller 内使用 tableview。因为控制器不是 UItablecontroller,所以我不能直接配置单元格。如果我拖入一个表格视图单元格,我可以使用单元格标识符等对其进行配置,但 XIB 不使用我的表格视图单元格。我如何加入他们?我宁愿不使用代码,因为这似乎违反了工作流程的直觉。

4

2 回答 2

1

如果您使用 Storyboard,您可以直接在 VC 中添加自定义单元并进行配置。但是,如果您使用的是 xib,您必须创建一个自定义单元格类并以编程方式加载它们,或者在单独的 xib 中创建一个带有自定义单元格的自定义类,然后从 xib 加载自定义单元格,甚至您只需创建一个带有简单自定义的 xib表格单元格并从 xib 加载。在 UITableView 上参考苹果文档

据我了解,您需要在代码中使用自定义单元格。如果您不使用情节提要,请尝试使用它。在这里,我为自定义单元格创建了一个自定义,并在 xib 中添加了自定义单元格。我添加了一个单独的 xib,在 xib 中拖放 UITableViewCell(如果存在,请删除任何视图)。现在单击您刚刚添加的单元格,在身份检查器中将类名称更改为您创建的自定义类的名称。选择文件所有者并更改其到您需要自定义单元格的类的名称。(这表明您的单元格将用于连接 tableview 的委托和数据源的特定类)。现在在你想要你的单元格的类中,添加一个 UITableViewCell 类型的 IBOutlet。将此连接到您在 xib 中创建的单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"CustomCell";
     YourCustomCell *cell = (YourCustomCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
            if (!cell)
            {
                [[NSBundle mainBundle] loadNibNamed:@"YourCustomCell"
                                              owner:self
                                            options:nil];
                cell = self.yourOutletCell;
                self.yourOutletCell = nil;
            }
}

如果您正在使用 xib 加载并且如果您有多个 xib 的自定义单元格,则可以通过 xib 名称加载它们,如下所示

NSArray *topLevelObjects;
topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"YourCustomCell" owner:self options:nil];
 for (id currentObject in topLevelObjects)
       {
             if ([currentObject isKindOfClass:[UITableViewCell class]])
               {
                 cell =  (YourCustomCell *) currentObject;
                    break;
                }
       }
于 2013-02-26T13:25:24.377 回答
0

如果是静态单元格,可以用 Outlet 指向这个单元格,然后在cellForRowAtIndexPath

于 2013-02-26T10:19:26.880 回答