使用iOS 5 ::我有一个场景,我必须使用自定义单元格创建一个tableView。 自定义单元格有一个名为TainingCellController的UITableViewCell子类和一个NIB文件TrainingCell.xib。而父表放在一个名为TrainingController的UIViewController中。
现在我真的很想知道,CustomCell与文件所有者之间的关系,谁收到IBActions或IBOutlets ..
在Custom Cell NIB文件中,我可以更改文件所有者(默认设置为NSObject),也可以单击单元格本身并将其类从UITableViewCell更改为TrainingCellContrller ..
这两个选项的适当类应该是什么? IBActions&是否定义了IBOutlets(TrainingCellController或TrainingController)?
如果我需要在TrainingCellController中定义“自定义单元格中的标签”,而在TrainingController中定义按钮动作,那么该怎么办?
答案 0 :(得分:8)
您会将UITableViewCell
的课程设置为CustomCell
的课程,然后您将在IBoutlet
课程中定义CustomCell
并连接它们。
然后您将Xib的文件所有者设置为ViewController
,并在ViewController
中声明
IBOutlet CustomCell *yourClassLevelCell;
并将此IBOutlet
与您的Xib UITableViewCell
现在,当您在ViewController's
方法cellForRowAtIndexPath
中初始化单元格时,您将手动添加目标,如下所示:
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = yourClassLevelCell;
[cell.button addTarget:self ... ];
//button is IBOutlet in your CustomCell class which you will have
//connected to your Button in xib
}
答案 1 :(得分:1)
尝试使用同一个tableView类
上的动态按钮-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"WorkRequestedCC" owner:self options:nil];
{
for (id oneObject in nib) if ([oneObject isKindOfClass:[WorkRequestedCC class]])
cell = (WorkRequestedCC *)oneObject;
}
UILabel *Button=[[UIBUtton alloc]initWithFrame:CGRectMake(792, 13, 10, 15)];
[Button addTarget:self action:@selector(ButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:Button];
}
-(void) ButtonClicked
{
//your code here
}
}