在Storyboard中创build自定义的UITableViewCell

想要创build一个静态菜单(IOS 5),并尝试在故事板内创build自定义单元格,然后加载到分组的tableview。

我创造了出路

@property(nonatomic,strong) IBOutlet UITableViewCell *labelCell; 

ViewController类设置为适当的TableViewController,并将自定义单元连接到此出口。

我也有委托和数据源build立。

我有

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { return self.labelCell; } 

我确定这里有一个错误,但我只是想显示一个单元格,然后从那里出发。 似乎没有任何通过故事板在IB内执行自定义单元格的示例。 我仍然可以使用旧的方式创build一个xib文件并将其加载到mainBundle中,但我只想保持最新的我猜。

但与我上面我得到一个崩溃时,我加载这个视图控制器。 SIGABRT

如果您已经将UITableView设置为在故事板中使用“静态单元格”,则不需要实现任何UITableViewDataSource方法,并且可以直接在Interface Builder中修改单元格。 对于单个标签单元格,select单元格并将其types更改为“基本”。 您现在可以像编辑其他视图对象一样编辑单元格。

以下是我在使用故事板时如何获得单元格的知识。 将UITableView拖到视图中时,它会附带一个已经设置为子视图的原型单元格。 要使用此原型单元格,请在属性检查器中设置唯一的重用标识符,然后使用相同的标识符将cellForgeLowAtIndexPath:方法中的单元格出列。 如果出队调用返回nil,则省略从头创build单元的代码; 我不认为这会发生。 所以只要将这个单元格出队,用通常的UITableViewCell方法来configuration它,然后返回它。

但是你也可以创buildUITableViewCell的自定义子类。 只需在故事板的类别标识检查器中设置类名称,然后将所需的任何元素从“对象”调板拖到单元格中即可。 然后在你的子类的代码文件中为它们创buildIBOutlet属性,并以通常的方式将它们连接到故事板中的单元格。 这比在代码中完成这一切要好得多!

最后,你可以在桌子上放置不止一种细胞。 只需将UITableViewCell对象从选用板拖放到表中,并在属性检查器中为每个对象提供唯一的重用标识符。 在你的cellForRowAtIndexPath:方法中,select每个单元格的types,你可以有一个非常灵活的表格视图。

本教程对我有帮助。 你可以通过标签来引用你需要的任何对象。

在故事板拖动UIImageViewUILabel等,并将标记设置为100(无论你想要的),然后在你的- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath使用标记来引用它。

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

  - (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; }