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