Выходы не могут быть подключены к повторяющемуся содержимому 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.
Например (используя свойство, которое у вас было в вашем вопросе):
Создайте свою собственность: @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
и продолжите работу
Если вы хотите создать повторно используемую ячейку, забудьте о том, что я сказал выше.