如何在tableview中配置tableviewcell,将其添加到XIB中的UItableviewcontroller?

时间:2013-02-26 10:11:51

标签: ios uiviewcontroller uitableview nib

我在XIB内部的uiviewcontroller中使用tableview。因为控制器不是UItablecontroller,所以我无法直接配置单元。如果我拖入tableview单元格,我可以使用单元格标识符等配置,但XIB不使用我的tableview单元格。我如何加入他们?。我宁愿不使用代码,因为这似乎违反了工作流程。

2 个答案:

答案 0 :(得分:1)

如果您使用的是Storyboard,则可以直接在VC中添加自定义单元格并进行配置。但是如果您使用的是xib,则必须创建自定义单元类并以编程方式加载它们,或者在单独的xib中创建自定义单元格,然后从xib加载自定义单元格,或者甚至只需使用简单的自定义创建xib表单元格和来自xib的加载。请参阅UITableView上的apple Docs

据我了解,您需要在代码中使用自定义单元格。如果您不使用故事板,请尝试使用它。在这里,我为自定义单元格创建了自定义类,并在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;
                }
       }

答案 1 :(得分:0)

如果是静态单元格,您可以使用Outlet指向此单元格,然后在cellForRowAtIndexPath

中返回