2010-01-12 2 views
1

У меня есть вид в приложении. В представлении содержатся UITableView и UIToolbar, а в UIToolbar у меня есть UISegmentedControl, который содержится в объекте UIBarButtonItem.Как подключить выход к UISegmentedControl в UIToolbar

Я могу получить сегментированный элемент управления для привязки к событию IBAction, а затем он действует на изменение значения, но я не вижу, как добавить IBOutlet к этому элементу.

Когда я пытаюсь добавить эту ссылку, единственным объектом, который хочет принять выходную ссылку, является табличное представление. Я ожидаю, что это будет желание выйти в розетку у Владельца Файла.

Что мне здесь не хватает?

+0

Каков тип вашего IBOutlet? Как вы пытаетесь его подключить? – Vladimir

+0

Я попытался установить его как UISegmentedControl, UIBarItem и UIBarButtonItem. Ни один из них, похоже, не заставит владельца файла ответить. При попытке подключения я сначала сохраняю файл .h, а затем пытаюсь перетащить строку из индикатора Add New Outlet на объект обратно к различным элементам в окне браузера объектов Interface Builder. – Redback

ответ

0

На самом деле проблема заключалась в том, что представление было неправильно назначено и использовало недопустимый подкласс. Это помешало Владельцу Файла разрешить мне увидеть IBOutlets, который уже был правильно указан в файле .h.

Как только я исправил иерархию классов, проблема исчезла.

Спасибо, все y'all, для вашей помощи.

+0

Вы должны нажать галочку рядом с этим ответом, чтобы система узнала, что на вопрос был дан ответ. – TechZen

+0

Да, я знаю, но когда я пошел делать это несколько дней назад, система не позволила мне это сделать, сказав, что мне нужно подождать еще два дня, прежде чем это позволит мне это сделать. Теперь сделано. Приветствия, и спасибо за напоминание. – Redback

0

Ваш вопрос непонятен.

Если вы пытаетесь добавить выход к сегментированному элементу управления, то есть розетку, которая проходит от сегментированного элемента управления к другому объекту, тогда вы должны подклассифицировать сегментированный элемент управления с добавленным свойством outlet. Вывод - это указатель на внешний объект, поэтому класс должен выделять память для указателя и создавать для него символ.

Если вы пытаетесь связать розетку с файловым владельцем с сегментированным элементом управления, но видя, что не выбрали свойство выходного файла File Owner в качестве выбора, то вы либо (1) неправильно определили розетку в классе File Owners, либо (2) не назначить владельца файла правильному классу.

Для (1), в файл класса Владелец вы должны иметь что-то, что выглядит следующим образом:

@property (nonatomic, retain) IBOutlet UISegmentedControl *mySegmentedControl; //best 

или

@property id mySegmentedControl; //works but is sloppy unless the flexibility is required 

Для (2) В интерфейсе строитель, смотрите в инспекторе в панели идентификации и убедитесь, что для класса File Owner назначен соответствующий класс.

+0

Первый образец (1) верен, но (2) неверен. Это должен быть @property id mySegmentedControl; (нет *). –

+0

Ха, да, это всегда вызывает меня даже после всех этих лет. Я просто не могу победить эту привычку тем, что я знаю, это объект. – TechZen

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