Подтвердить что ты не робот

Подключите розетку прототипа ячейки в раскадровке

Я новичок в раскадровке, поэтому у меня есть некоторые трудности...

Я создал TableViewController, и я бы хотел настроить Cell Prototype. В прототипе я добавил несколько ярлыков, которые я хотел бы настроить с помощью собственного класса, который наследуется от UITableViewCell (AreaListCell). В "Раскадке" для прототипа я настроил пользовательский класс с "AreaListCell", а его стиль "Custom".

В раскадровке, когда я выбираю прототип ячейки, а затем помощника, помощник отображает мой класс, который реализует UITableViewController (AreasTableViewController), а не мой класс "AreaListCell".

В результате я могу создать выход (используя Ctrl + Drag из метки прототипа соты) в класс AreasTableViewController, но не в класс AreaListCell! Любая идея, как подключить прототип ячейки с моим классом AreaListCell?

Спасибо за вашу помощь!

4b9b3361

Ответ 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