2010-03-27 6 views
0

Для быстрого издевательства пользовательского интерфейса я хотел бы иметь возможность перетаскивать кнопки на представление в построителе интерфейса, а затем перетаскивать соединение с этой кнопки на представление, которое должно появляться при нажатии на него.Добавление выходов в UIButton

Подкласс UIButton немного неудобен для использования в IB, поэтому я предпочел бы добавить поведение к самому UIButton. К сожалению, похоже, магазины, созданные в категории не видны в IB:

@interface UIButton (myextensions) { 
    IBOutlet UIView *outletDestination; 
} 
@end 

Может дополнительные выходы быть добавлены таким образом?

ответ

2

Можно ли добавить дополнительные розетки таким образом?

Nope. Вы не можете добавлять переменные экземпляра, объявляя их в категории.

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

Я не думаю, что вы можете это сделать, если собираетесь создать собственный аксессуар для собственности (вы должны использовать @synthesize), но это не так, как это важно для вашего дела: вы просто издеваетесь UI, поэтому вы не собираетесь писать пользовательские аксессоры.

В качестве альтернативы вы можете создавать выходы в самой IB на вкладке «Классы» на панели «Библиотека». Выберите там класс, затем вкладку «Outlets» в панели внизу, затем добавьте выход в список.

Для этого другого устройства вам понадобится открыть ниб или открыть классы. Это потому, что он контекстно-зависим: у Mac nib будут классы AppKit (например, NSButton), тогда как iPhone nib будет иметь классы UIKit.

+0

Если я добавляю @property в категорию UIButton, я не могу использовать @synthesize, потому что это категория, и я не могу писать свои собственные методы, потому что нет никакого ivar для хранения данных. Если я создаю выход в IB, "[ setValue: forUndefinedKey:]: этот класс не является ключевым значением, совместимым с кодированием для ключевого адресата." Я пробовал все вышеперечисленное с помощью UIRoundedRectButton. – alltom

+0

Добавление выходов в IB действительно полезно для насмешек; когда вы начинаете программировать, вы можете и должны объявлять выходы в заголовках. Что значит «я не могу использовать' @ synhesize' »? Что происходит, когда вы пытаетесь? –

+0

Прошу прощения, я пропустил ваш комментарий; Я не думаю, что получил уведомление по электронной почте. Ошибка использования @synthesize заключается в следующем: «@synthesize не разрешено в реализации категории» – alltom

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