问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ios 在xib中的控制器添加了tableview 怎么添加cell

发布网友 发布时间:2022-04-24 18:42

我来回答

1个回答

热心网友 时间:2023-11-03 00:24

我们以前通常会这样做
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentiferId = @"MomentsViewControllerCellID";
MomentsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentiferId];
if (cell == nil) {
NSArray *nibs = [[NSBundle mainBundle]loadNibNamed:@"MomentsCell" owner:nil options:nil];
cell = [nibs lastObject];
cell.backgroundColor = [UIColor clearColor];

};

}
return cell;
}
严重注意:我们之前这么用都没注意过重用的问题,这样写,如果在xib页面没有设置 重用字符串的话,是不能够被重用的,也就是每次都会重新创建,这是严重浪费内存的,所以,需要修改啊,一种修改方式是使用如下ios5提供的新方式:
- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier

还有就是在xib页面设置好(ios5之前也可以用的)

如果忘了在xib中设置,还有一种方式 http://stackoverflow.com/questions/413993/loading-a-reusable-uitableviewcell-from-a-nib
NSArray * nibObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomTableCell" owner:nil options:nil];

for (id obj in nibObjects)
{
if ([obj isKindOfClass:[CustomTableCell class]])
{
cell = obj;
[cell setValue:cellId forKey:@"reuseIdentifier"];
break;
}

}

还有更常用的
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return[self.items count];} -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell * cell =[tableView dequeueReusableCellWithIdentifier:@"myCell"]; if(!cell){ cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"];} cell.textLabel.text =[self.items objectAtIndex:indexPath.row]; return cell;

}

但是现在有一种新的方式了,可以采用如下的方式
采用registerNib的方式,并且把设置都放在了willDisplayCell方法中了,而不是以前我们经常用的cellForRowAtIndexPath
这个方法我试了下,如果我们在xib中设置了 Identifier,那么此处的必须一致,否则会crash的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCustomCell * cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
if (!cell)
{
[tableView registerNib:[UINib nibWithNibName:@"MyCustomCell" bundle:nil] forCellReuseIdentifier:@"myCell"];
cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
}

return cell;
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(MyCustomCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.leftLabel.text = [self.items objectAtIndex:indexPath.row];
cell.rightLabel.text = [self.items objectAtIndex:indexPath.row];
cell.middleLabel.text = [self.items objectAtIndex:indexPath.row];
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我腌制的辣椒有一股臭味 枸杞干燥的方法介绍 枸杞怎样干燥 ...这么严了吗?体检左边精索静脉曲张2.4mm算轻微了,还必须要做手术... ...出,哪个不是科技类网站(单选) A、虎嗅 B、猫扑 C、i黑马? 宁波到宁海的车汽车南站最早几点? 一群河马有多少只? 一群是指多少个人以上 有什么办法屏蔽不良网站? 北京二手房网签之后还要多久过户 北京二手房网签后多久能过户? 北京二手房如何过户 ios 在xcode中怎么单独设置xib ios xib中的控件何时实例化 在iOS中渐变色label怎么使用xib方式实现 IOS xib拖线到代码的问题 ios xib 会不会增大ipa包 ios xib文件在什么时候加载 ios 开发中xib的multiplier有什么用 iOS 问题:我用xib布局的,怎么适配 ios 怎么用xib创建collectionview ios xib界面卡顿 ios xib 怎么调用宏定义 ios xib 文件什么时候加载 ios xib拖线怎么调用shouldchangecharactersinrange IOS开发,代码布局与xib布局有什么区别 ios xib 国际化翻译 怎么一次性导出 企业内部邮箱怎么在个人电脑登陆 梦见自己下山去捞鱼 地上到处都是大便? 梦见自已肚子里不停拉好多鱼和虫我肚子里拉出来全是鱼和虫 梦到厕所好多鱼,拉屎拉到鱼身上,一条鱼钻到*里,拽出来后就死了。是什么意思?? 梦见黄色的屎里有好多鱼 iOS开发,怎么注册xib自定义的cell iOS的界面究竟使用xib或者storyboard好的还是写code好 ios中xib的safe area怎么去掉 ios 的xib中两个相邻的view重叠如何解决? 三厢福特福克斯怎么样? 老款福特福克斯三厢怎么样 新福克斯三厢的后备箱从车里怎么打开啊 经典福克斯三厢怎么样 福特福克斯三厢的基本介绍 新款福克斯三厢的怎么样? 福克斯三厢是否是中国特有? 福克斯两厢和三厢怎么选?为什么? 新福克斯三厢有什么毛病 福克斯三厢2012款如何 福克斯三厢可以吗 CMA考试报名流程有什么? 如何申请CMA证书?需要满足哪些条件? cma考试怎么支付报名费 报考管理会计师CMA考试需要多少钱 电脑2GB内存够用吗