问答文章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
梦幻西游我这吸血鬼值多少钱 梦幻西游吸血鬼价格问题,这个吸血鬼能卖多少钱啊?MHB比例100元=500W 给... 诚心求解梦幻西游,我这只吸血鬼能值多少钱?我要个能卖出去的价... 梦幻西游手游,我现在69级,买个79的吸血鬼,可以带吗, 我梦幻西游69J号买了个119级吸血鬼,但是不能摆摊出售,那可以跟别人交易... 梦幻西游手游洗出变异吸血鬼不能摆摊 梦幻西游本人80级 有一只吸血鬼 系统不给摆摊 请问能否交易 和平精英 和平精英封号了能注销掉吗? 梦见想蛇一样的东西掉进下水道 梦见包掉到下水道里 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内存够用吗