IBAction для кнопки в пользовательском UITableViewCell - PullRequest
4 голосов
/ 12 марта 2012

Использование iOS 5::: У меня есть сценарий, в котором я должен создать табличное представление с пользовательскими ячейками.У пользовательских ячеек есть Контроллер с именем TainingCellController Подкласс UITableViewCell и файл NIB TrainingCell.xib.В то время как родительская таблица размещена внутри UIViewController с именем TrainingController ..

Теперь мне серьезно интересно, как эта CustomCell связана с владельцем файла, который получает IBActions или IBOutlets ..

Inпользовательский файл NIB ячейки, я могу изменить владельца файла (по умолчанию установлен на NSObject), а также могу щелкнуть по самой ячейке и изменить ее класс с UITableViewCell на TrainingCellContrller ..

Какими должны быть соответствующие классы дляэти два варианта ??Где должны быть определены IBActions и IBOutlets (TrainingCellController или TrainingController)?

И что, если мне нужно, чтобы выходы для «меток в настраиваемой ячейке» определялись в TrainingCellController, а действие кнопки должно определяться в TrainingController ??

Ответы [ 2 ]

8 голосов
/ 12 марта 2012

Вы установите класс 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 голос
/ 12 марта 2012

Попробуйте поработать с динамическими кнопками в одном и том же классе таблицы.

-(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
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...