Выходы не могут быть подключены к повторяющемуся содержимому iOS 5

Я новичок в iOS, я работаю над сотовой ячейкой iitedview, я перетащил кнопку в ячейку таблицы из инспектора объектов. но когда я делаю свой IBoutlet, он показывает ошибку, например: "Выход не может быть подключен к повторяющемуся контенту", что это значит? мы не можем сделать выходы UIbutton в cellview cell.kindly. я застрял в нем. Я делаю выход таким образом:

@property (weak, nonatomic) IBOutlet UIButton *sa;

и ошибка: "Выход sa в UIbutton недействителен"

Ответы

Ответ 1

Ваш ответ заключается в том, что вы используете объект в UITableViewCell, повторно используя его,

Таким образом, вы не можете создать его, кроме того, что создаете свой класс для своего "UITableViewCell".

Ниже приведена ссылка для вас,

Я надеюсь, что это будет полезно для вас.

Вам нужно перетащить объект в свой UITableViewCell, Затем вы должны предоставить тег для этого объекта.

то вы можете использовать его с его тегом.

Сначала укажите идентификатор UITableViewCell,

Ниже приводится ссылка на изображение для него.

enter image description here

Затем дайте тег вашему объекту пользовательского интерфейса, Как это в этом эталонном изображении.

enter image description here

Ниже приведен пример кода, который я использую регулярно,

- (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.

}

Не стесняйтесь спрашивать, нужна ли вам дополнительная помощь.

Ответ 2

Вы можете создать подкласс для UITableViewCell, как показано ниже кода

Создайте новый класс с именем CCell.h и CCell.m

в CCell.h

@interface CCell : UITableViewCell
@property(nonatomic,strong)IBOutlet UILabel *lblTemp;
@property(nonatomic,strong)IBOutlet UIButton *btnTemp;
@end

Теперь в Viewcontroller.h

#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 > open right side navigator > откройте 3-ей вкладку с именем (Custom Class) > add class= CCell > теперь откройте последнюю вкладку, вы получите опцию lblTemp bind.

Возможно, это поможет вам.

Ответ 3

Поскольку вы создаете пользовательскую ячейку, вам нужно создать для нее класс. Вы будете подклассифицировать UITableViewCell.

Например (используя свойство, которое у вас было в вашем вопросе):

  • Создайте новый класс Objective-C. Установите подкласс в: UITableViewCell Дайте ему соответствующее имя (т.е. Ячейку)

  • В файле cell.h:

Создайте свою собственность: @property (слабый, неатомный) IBOutlet UIButton * sa;

В файле cell.m:

@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.In Interface Builder вернитесь к созданной строке. Нажмите "Показать идентификационный инспектор". В разделе "Пользовательский класс" установите его в файл соты.

4.Нажмите клавишу "Option" и щелкните файл "cell.h". Затем подключите кнопку к IBOutlet.

5.В файле контроллера табличного вида:

импортируйте файл cell.h.

В cellForRowAtIndexPath метод:

Cell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

Что это!

Тогда все должно работать. Надеюсь, это поможет!

Ответ 4

Вы не можете, потому что кнопка является частью ячейки, и при запуске приложения (возможно) будет несколько экземпляров этой ячейки.

Предположим, что вы можете установить соединение, и при запуске приложения есть 2 ячейки (и, следовательно, 2 кнопки), Cocoa Touch не может решить, на какую кнопку будет ссылаться только эта розетка (вы тоже не можете).

Вы можете подклассифицировать UITableViewCell, попросить представление таблицы использовать ваш подкласс для своих ячеек и подключить кнопку к выходу в подклассе. В этом случае будет несколько экземпляров подкласса, и каждый экземпляр будет отображаться в одну ячейку.

Ответ 5

Всякий раз, когда вам нужно создать собственную ячейку tableView, рекомендуется подкласс UITableViewcell и добавить UIButton в этот класс. А в вашем методе делегата tableview cellForRowAtIndexPath вы можете создать объект подкласса tableviewCell для каждой ячейки.

Ответ 6

Я сделал в UITiewController соединение с ячейкой UITableviewcell, он должен быть изменен на Create CustomCell в подклассе UITableviewcell, а затем сделан в выходном соединении в этом подклассе, который был очищен.

Ответ 7

@Мишал Аван

Если вы действительно хотите это сделать, и у вас есть конечное число ячеек. U может:

  • Изменение вашего ViewController как подкласса UITableViewController, а затем вытащить файл Table View Controller на ваш StoryBoard
  • Изменение содержимого Table View в StoryBoard от Dynamic Prototypes до Static Cells
    1]
  • Затем вы можете добавить некоторые виды в свою ячейку, например, некоторые ярлыки 2]

  • Подключите label к вашему ViewController и продолжите работу

Если вы хотите создать повторно используемую ячейку, забудьте о том, что я сказал выше.