啊,我明白你现在想要什么了。
您想要的是在表格视图单元格中显示一些数据。然后移动到应用程序中的其他位置,并在不同的表格视图中显示相同的数据,但布局方式完全相同。
那你要做的就是这个...
首先创建一个新类,它是它的子类,UITableViewCell
例如MyTableViewCell
.
下一部分取决于您是否使用 Interface Builder,但我现在将在代码中完成所有操作。
在新类中,在 .h 文件中创建您的接口属性。
@interface MyTableViewCell : UITableViewCell
@property (nonatomic, strong) UILabel *nameLabel;
@property (nonatomic, strong) UIImageView *someImageView;
etc...
@end
现在在 .m 文件中,您可以像这样设置它......
@implementation MyTableViewCell
- (void)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//set up your labels and add to the contentView.
self.nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
[self.contentView addSubView:self.nameLabel];
self.someImageView = ...
[self.contentView addSubView:self.someImageView];
// and so on for all your interface stuff.
}
return self;
}
@end
现在在UITableViewController
你想使用这个单元格的地方你可以做......
- (void)viewDidLoad
{
// other stuff
[self.tableView registerClass:[MyTableViewCell class] forCellReuseIdentifier:@"MyCustomCellReuseIdentifier"];
// other stuff
}
然后在单元格中的行...
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyTableViewCell *customCell = [tableView dequeueReusableCellWithIdentifier:@"MyCustomCellReuseIdentifier"];
customCell.nameLabel.text = //some string that you got from the data
customCell.someImageView.image = //some image that you got from the data
return customCell;
}
这样做你可以在多个地方使用相同的单元格布局,你所要做的就是填充数据。
当您将数据传递到新的表格视图时,您可以使用相同的单元格类来重新填充它与传递的数据。
永远不要传递 UIView 或 UIView 子类。它们不应该以这种方式包含数据。仅用于显示它。