出口无法连接到重复内容iOS 5
我是iOS新手,我正在使用uitableview单元格。我将按钮从对象检查器拖放到表格视图单元格。但当我制作它的IBoutlet时,它显示了一个错误,比如“Outlets不能连接到重复内容”,这意味着什么??我们无法在tableview单元格中输出UIbutton。请查看。我被困在里面了。我在做这样一个出口:出口无法连接到重复内容iOS 5,ios,uitableview,Ios,Uitableview,我是iOS新手,我正在使用uitableview单元格。我将按钮从对象检查器拖放到表格视图单元格。但当我制作它的IBoutlet时,它显示了一个错误,比如“Outlets不能连接到重复内容”,这意味着什么??我们无法在tableview单元格中输出UIbutton。请查看。我被困在里面了。我在做这样一个出口: @property (weak, nonatomic) IBOutlet UIButton *sa; 错误是“UIbutton的sa出口无效”您不能,因为按钮是单元格的一部分,并且在应用
@property (weak, nonatomic) IBOutlet UIButton *sa;
错误是“UIbutton的sa出口无效”您不能,因为按钮是单元格的一部分,并且在应用程序运行时(可能)会有多个单元格实例 假设您可以建立连接,并且应用程序运行时有2个单元格(因此有2个按钮),Cocoa Touch无法决定哪个按钮将由该唯一插座引用(您也不能)
您可以对
UITableViewCell
进行子类化,要求表视图对其单元格使用您的子类,并将按钮连接到子类中的插座。在这种情况下,子类将有多个实例,每个实例将映射到一个单元格。每当需要创建自定义tableView单元格时,建议将UITableViewcell
子类化,并在该类中添加UIButton
。在tableview委托方法中,您可以为每个单元格创建子类tableviewCell对象。您的答案是,通过重用UITableViewCell中的对象
因此,除非为“UITableViewCell”创建类,否则无法创建它的出口
以下是您的参考资料
我希望它对你有用
您需要在UITableViewCell
中拖放对象,
然后你必须给那个物体贴上标签
然后您可以将其与标签一起使用
首先为UITableViewCell
指定一个标识符
下面是它的参考图片
然后给你的UI对象一个标签,
如此参考图像中所示
下面是我经常使用的示例代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *Cell = [self.TableListRegion dequeueReusableCellWithIdentifier:@"List"];
UIButton *objectOfButton = (UIButton *)[CellLast viewWithTag:200];
[objectOfButton addTarget:self action:@selector(YourSelector:) forControlEvents:UIControlEventTouchUpInside];
return Cell;
}
现在您可以通过以下方式接收按钮事件:
-(IBACTION)YourSelector:(id)sender{
// Your Button in Cell is selected.
// Do your stuff.
}
请随时询问您是否需要更多的帮助。您可以为UITableViewCell创建子类,如下面的代码所示 创建名为CCell.h和CCell.m的新类 在CCell.h中
@interface CCell : UITableViewCell
@property(nonatomic,strong)IBOutlet UILabel *lblTemp;
@property(nonatomic,strong)IBOutlet UIButton *btnTemp;
@end
#import "CCell.h"
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CCell *cell = (CCell *)[tblView dequeueReusableCellWithIdentifier:@"CCell"];
cell.lblTemp.text = @"asd";
cell.btnTemp.tag = indexPath.row;
[cell.btnTemp addTarget:self action:@selector(btnTempClicked:) forControlEvents:UIControlEventTouchUpInside]
return cell;
}
-(void)btnTempClicked:(UIButton *)btnTemp
{
NSLog(@"Button Clicked Index = %d",btnTemp.tag);
}
现在在您的视图控制器.h
@interface CCell : UITableViewCell
@property(nonatomic,strong)IBOutlet UILabel *lblTemp;
@property(nonatomic,strong)IBOutlet UIButton *btnTemp;
@end
#import "CCell.h"
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CCell *cell = (CCell *)[tblView dequeueReusableCellWithIdentifier:@"CCell"];
cell.lblTemp.text = @"asd";
cell.btnTemp.tag = indexPath.row;
[cell.btnTemp addTarget:self action:@selector(btnTempClicked:) forControlEvents:UIControlEventTouchUpInside]
return cell;
}
-(void)btnTempClicked:(UIButton *)btnTemp
{
NSLog(@"Button Clicked Index = %d",btnTemp.tag);
}
现在打开Xib>点击UITableviewCell>打开右侧导航器>打开名为(自定义类)的第三个选项卡>添加类=CCell
>现在打开最后一个选项卡,您将获得lblTemp
bind选项
这可能会对您有所帮助。因为您要创建一个自定义单元格,所以需要为它创建一个类。您将为UITableViewCell创建子类 例如(使用问题中的属性):
@synthesize sa = _sa;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
3.在Interface Builder中,返回到您创建的行。
单击“显示身份检查器”。
在“自定义类”下,将其设置为单元格文件
4.按住“Option”键并单击“cell.h”文件。然后将按钮连接到IB插座
5.在表视图控制器文件中:
导入cell.h文件
在cellforrowatinexpath
方法中:
Cell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
就这样
到时候一切都会好起来的。希望这有帮助 我已经在UIViewController中的UITableviewcell的标签的出口连接中完成,它应该更改为在UITableviewcell的子类中创建CustomCell,然后在此子类中的出口连接中完成,并清除错误。@Mishal Awan 如果你真的想这样做,你的细胞数量是有限的。你可以:
ViewController
更改为UITableViewController
的子类,然后将表视图控制器
文件拖到情节提要
情节提要中表格视图的内容从动态原型更改为静态单元格
标签
连接到视图控制器
并继续其余工作如果您想创建一个可重复使用的单元,请忘记我上面所说的内容。一个非常简单的解决方案是: 只需使用table view单元格子类中的view或NSLayoutConstraint引用outlets,而不是table view controller,并使用CellForRowatineXpath方法或任何其他方法中的table view单元格对象进行访问
注意:这是一个重复对象,所以您不能在“表视图控制器”中引用。您正在使用情节提要吗?是的,我正在处理情节提要检查此答案()这是swift的答案,但答案会帮助您。@Mishal,那么您做得不对。您需要为该对象指定标记。我会发布关于它的答案。呼???请您提供一些帮助或更新您的答案,但这是我想要的标签按钮??您可以为按钮做同样的事情。你的困难是什么?使用这个,UIButton*MapLegendSel=(UIButton*)[CellLast viewWithTag:8];[MapLegendSel addTarget:self action:@selector(enterinImprint:)for ControlEvents:UIControlEventTouchUpInside];让我们来看一看。@MishalAwan这是一个使用UITableViewCell子类的好方法,这样您就可以获得插座、设置标签和管理其他事情。如将标记设置为按钮如indexPath.row和在按钮选择器方法中,您可以识别单击了哪个按钮。请任何人帮助我查找错误,我正在使用FMDB将数据存储在UITableview中..节0的数量无效,我建议所有链接,但我仍有相同的错误。