Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在情节提要中创建自定义UITableViewCell_Iphone_Objective C_Ios_Uitableview_Ios5 - Fatal编程技术网

Iphone 在情节提要中创建自定义UITableViewCell

Iphone 在情节提要中创建自定义UITableViewCell,iphone,objective-c,ios,uitableview,ios5,Iphone,Objective C,Ios,Uitableview,Ios5,想要创建一个静态菜单IOS 5,并尝试在情节提要中创建自定义单元格,然后加载到分组的tableview 我创造了出口 @property(nonatomic,strong) IBOutlet UITableViewCell *labelCell; ViewController类设置为适当的TableViewController,我已将自定义单元格连接到此插座 我还设置了委托和数据源 我有 -(UITableViewCell *)tableView:(UITableView *)tableVie

想要创建一个静态菜单IOS 5,并尝试在情节提要中创建自定义单元格,然后加载到分组的tableview

我创造了出口

@property(nonatomic,strong) IBOutlet UITableViewCell *labelCell;
ViewController类设置为适当的TableViewController,我已将自定义单元格连接到此插座

我还设置了委托和数据源

我有

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
{
  return self.labelCell;
}
我肯定这有很多错误,但我只是想显示一个单元格,然后从那里开始。似乎没有任何通过故事板在IB中进行自定义单元格的示例。我仍然可以使用旧方法创建xib文件并将其加载到mainBundle中,但我想我只是想保持最新


但是用上面的方法,当我加载这个视图控制器时,我会崩溃。SIGABRT

如果已将UITableView设置为在情节提要中使用“静态单元格”,则无需实现任何UITableViewDataSource方法,并且可以直接在Interface Builder中修改单元格。对于单个标签单元格,选择该单元格并将其类型更改为“基本”。现在,您可以像编辑任何其他视图对象一样编辑单元格。

以下是我学到的有关使用故事板时如何为表格获取单元格的内容。将UITableView拖动到视图中时,它附带一个已设置为子视图的原型单元。要使用此原型单元,请在属性检查器中设置唯一的重用标识符,然后在CellForRowatineXpath:方法中使用相同的标识符将该单元出列。如果出列调用返回nil,我省略了从头创建单元格的代码;我认为这不可能发生。因此,只需将单元格出列,使用通常的UITableViewCell方法配置它,然后返回它

但您也可以创建UITableViewCell的自定义子类。只需在情节提要的类标识检查器中设置类名,然后将所需的任何元素从“对象”选项板拖动到单元格中。然后在子类的代码文件中为它们创建IBOutlet属性,并以通常的方式将它们连接到故事板中的单元。这比必须在代码中完成这一切要好得多

最后,您的表中可以有多种单元格。只需将UITableViewCell对象从调色板拖动到表中,并在属性检查器中为每个对象指定一个唯一的重用标识符。在cellForRowAtIndexPath:method中,选择每个单元格的类型,就可以拥有非常灵活的表视图。

教程对我很有帮助。您可以通过标记引用所需的任何对象

在情节提要中,拖动UIImageView或UILabel等,然后在-UITableViewCell*tableView:UITableView*tableView cellForRowAtIndexPath:NSIndexPath*indexPath中,将标记设置为100,然后使用标记引用它

以下是本教程中的示例代码,请记住在故事板中设置标记:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

// Configure the cell...
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

// Display recipe in the table cell
Recipe *recipe = [recipes objectAtIndex:indexPath.row];
UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100];
recipeImageView.image = [UIImage imageNamed:recipe.imageFile];

UILabel *recipeNameLabel = (UILabel *)[cell viewWithTag:101];
recipeNameLabel.text = recipe.name;

UILabel *recipeDetailLabel = (UILabel *)[cell viewWithTag:102];
recipeDetailLabel.text = recipe.detail;

return cell;
 }

是的。就这样。我不知道为什么我没有找到任何指导,告诉你这样做。作为一个随机问题,使用静态单元格是否意味着您拥有在IB中指定的单元格数量?因为您不必实现数据源方法,我想您不能更改表视图中的数据,这就是为什么他们称它为static-对吗?@Warkst-正是这样。事实上,您应该删除数据源方法的存根实现。这都是事实,但问题是关于静态表视图,它不使用原型。我有一个新的场景怀疑。如果我有一个自定义单元格的UITableView,其中包含+、-按钮和UITextField。所有的设置都已经按照你的第2段完成了,但是现在如果我想防止我的细胞被重复使用,有什么好的方法吗?我应该这样做吗?我想要添加多封电子邮件的功能ID@jrturton啊,但是有些人是通过谷歌搜索来到这里的,没有意识到静态部分。这个标题有点误导人。所以这个答案其实就是我想要的。