在Custom UITableViewCell中的按钮上进行IBAction

时间:2012-03-12 09:37:09

标签: iphone ios uitableview

使用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中定义按钮动作,那么该怎么办?

2 个答案:

答案 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
     }
}