Подключите розетку прототипа ячейки в раскадровке
Я новичок в раскадровке, поэтому у меня есть некоторые трудности...
Я создал TableViewController, и я бы хотел настроить Cell Prototype. В прототипе я добавил несколько ярлыков, которые я хотел бы настроить с помощью собственного класса, который наследуется от UITableViewCell (AreaListCell).
В "Раскадке" для прототипа я настроил пользовательский класс с "AreaListCell", а его стиль "Custom".
В раскадровке, когда я выбираю прототип ячейки, а затем помощника, помощник отображает мой класс, который реализует UITableViewController (AreasTableViewController), а не
мой класс "AreaListCell".
В результате я могу создать выход (используя Ctrl + Drag из метки прототипа соты) в класс AreasTableViewController, но не в класс AreaListCell!
Любая идея, как подключить прототип ячейки с моим классом AreaListCell?
Спасибо за вашу помощь!
Ответы
Ответ 1
ОБНОВЛЕНИЕ: Начиная с Xcode 4.6 (возможно, ранее) теперь вы можете создавать точки с помощью управления перетаскиванием! - Это нужно сделать в разделе интерфейса или расширении класса (расширение класса по умолчанию не существует для новых подклассов ячеек. Благодаря Стиву Хейли, указав это.
Вы не можете автоматически подключить розетку и создать ее, перетащив ее в блок кода в редакторе-помощнике, который является плохим, но вы можете вручную создать розетки и подключить их.
В интерфейсе вашего подкласса ячейки:
@interface CustomCell : UITableViewCell
@property (nonatomic) IBOutlet UILabel* customLabel;
@end
Синтез как нормальный в реализации.
В раскадровке выберите ячейку и перейдите к инспектору соединений, вы увидите новую розетку. Перетащите оттуда в соответствующий элемент вашего прототипа:
![enter image description here]()
Теперь этот метод можно получить как cell.customLabel
в вашем методе cellForRowAtIndexPath:
.
Ответ 2
Да, вы не можете подключать представления, находящиеся внутри пользовательской ячейки прототипа, используя метод ctrl + drag. Вместо этого используйте свойство тега представления, а затем, когда вы создаете ячейку, вытащите метки с помощью своих тегов.
Здесь:
//Let assume you have 3 labels. One for a name, One for a count, One for a detail
//In your storyboard give the name label tag=1, count tag=2, and detail tag=3
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomTableViewCell *theCell = [tableView dequeueReusableCellWithIdentifier:@"Prototype Cell"];
UILabel *nameLabel = (UILabel *)[theCell viewWithTag:1];
UILabel *countLabel = (UILabel *)[theCell viewWithTag:2];
UILabel *detailLabel = (UILabel *)[theCell viewWithTag:3];
nameLabel.text = @"name";
countLabel.text = @"count";
detailLabel.text = @"details";
return theCell;
}
Вы также можете установить ярлыки как свойства в свой собственный код ячейки, а затем, когда ячейка инициализирована, используйте вызов viewWithTag, чтобы присвоить свойства метки ярлыкам, которые вы создали на своих раскадровках.
Мне потребовалось несколько дней, чтобы понять, что я не могу перетащить Ctrl + внутри встроенной ячейки, чтобы создать IBOutlet.
Удачи!
EDIT: вы можете создавать IBOutlets для своих ярлыков внутри пользовательской ячейки и создавать привязку программной программы, а не через метод ctrl + drag.
EDIT 2: я был совершенно не прав, вы можете ctrl + drag. См. Второй ответ на этот вопрос. Это сложно, но это работает очень хорошо.
Ответ 3
Swift 3
//мы используем это, если ваши изображения находятся на сервере.
//мы получаем изображения с URL-адреса.
//вы можете установить изображение из вашего Xcode.
- URL-адрес изображений находится в имени массива = thumbnail i.e self.thumbnail [indexPath.row]
- on UITableviewCell помещает изображение в ячейку
-
выберите UIimageView, назначив ему тег из раскадровки.
let pictureURL = URL(string: self.thumbnail[indexPath.row])!
let pictureData = NSData(contentsOf: pictureURL as URL)
let catPicture = UIImage(data: pictureData as! Data)
var imageV = UIImageView()
imageV = cell?.viewWithTag(1) as! UIImageView
imageV.image = catPicture