2012-03-13 3 views
0

В приложении, над которым я работаю для iPhone, он решил не компилировать меня, когда я прошу его дать мне выход на ярлык в ячейке прототипа таблицы. Раньше у меня были выходы для меток, но я использовал либо стандартный вид, либо статические ячейки, а не прототипы. Я думаю, что это, вероятно, связано с тем, что метка принадлежит ячейке прототипа и будет дублироваться, поскольку все они имеют один и тот же идентификатор (ячейка), но потом я мог бы отключиться. Я не уверен, что делать с этим, если я использую только cell.textLabel.text, тогда моя кнопка загрузки не появится, пока я не нажму на ячейку.Невозможно скомпилировать соединение iOS5

Ошибка:

Couldn't compile connection: <IBCocoaTouchOutletConnection:0x4007cd200 <IBProxyObject: 0x4007de280> => lblServerName2 => <IBUILabel: 0x4009b7d00>> 

Кто-нибудь есть какие-либо предложения относительно того, как я мог бы идти о создании текста на пользовательской метке внутри клетки?

Для справки, я загрузил свой проект here. На данный момент это беспорядок, но в настоящее время это просто доказательство концепции. Я собираюсь пройти и очистить, как только я заработаю.

Любые предложения приветствуются.

EDIT:

This страница выручили. Я нашел его почти сразу после публикации этого вопроса. В принципе, я установил тег моего ярлыка равным 100, а затем использовал этот код внутри метода cellForRowAtIndexPath.

UILabel *lblServerName = (UILabel*)[cell viewWithTag:100]; 
lblServerName.text=[server getName]; 

И вот он, мой ярлык работает правильно и появляется моя кнопка.

+0

хмм .. в моем случае это не Работа. какой тип ячейки вы используете? – filou

ответ

3

Чтобы изменить текст в метке на произвольном UITableViewCell, присвоить метку на метку, а затем в коде сделать что-то вроде следующего:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathWithIndex:2]]; 
if (cell != nil) { 
    // This assumes that you set the tag to 1 on the label 
    UILabel *label = (UILabel *)[cell viewWithTag:1]; 
    label.text = @"New Text"; 
} 
1

This question обеспечивает более вероятное объяснение этого сообщения об ошибке ,

Как показано в WWDC 2011 Session 309, ячейки прототипа могут иметь абсолютно розетки, которые подключены к пользовательскому подклассу ячейки. Нет необходимости использовать tag, чтобы найти метку и присвоить ей значение позже.

Что, вероятно, произошло в вашем проекте (я не смотрел на него), так это то, что у вас была ссылка от вашей прототипной ячейки на другой объект в вашем раскадровке. Это неверно, поскольку ячейка прототипа не является реальной ячейкой. Их может быть ноль или тысяча. Удалите соединение, направленное наружу, и ошибка исчезнет.

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

+0

Если я удаляю внешнее соединение, изображение не отображается. – filou

+1

Я понятия не имею, о чем вы говорите, но я думаю, вы хотите поместить изображение в ячейку прототипа. Итак: создайте собственный подкласс 'UITableViewCell', установите ячейку прототипа в этот подкласс, создайте свойство' IBOutlet' для вашего 'UIImageView' в подклассе, перетащите' UIImageView' в ячейку прототипа, перетащите соединение из пустого часть ячейки в 'UIImageView', затем присвойте свой образ этому свойству в' -tableView: cellForRowAtIndexPath: '. –

Смежные вопросы