У меня есть кнопка UIBarButtonItem *. Идея заключается в том, что пользователь нажимает кнопку, а затем появляется окно. Это объявлен в целевой/действие кнопки (т.е. нажав кнопку вызываетUIBarButtonItem: кадр, обработанный по-разному для вызова целевого действия против выполнения. Выбор: withObject:
(void)showMyWindow:(id)sender
, где отправителем является UIBarButtonItem
В showMyWindow:. Метод, рисунок во всплывающем окне требуется кадр отправителя. Теперь UIBarButtonItem обычно не позволяет вам получить доступ к его фрейму. В качестве части хака я отправил отправителя в UIView, а затем обратился к этому фрейму UIView. Я не думал, что это будет работа, но, на удивление, это так.
Однако я также хочу вызвать метод showMyWindow: в другом месте. Поэтому у меня есть эта строка кода:
[self performSelector:@selector(showMyWindow:) withObject:self.button];
Здесь мое приложение падает. Я подсказала проблему именно к этому:
(void)showMyWindow:(id)sender
{
//I should be checking before the cast here, but it helps illustrate the problem
UIView *senderAsView = (UIView *)sender
CGRect frame = senderAsView.frame;
...
}
Суть в том, что я могу как-то выполнить этот бросок + доступ к кадру, когда я вызываю метод с целевыми действиями, но не тогда, когда я использую performSelector: withObject:
Почему существует разница? Почему это действие может быть выполнено в одном случае, но не в другом?
Спасибо.
Что вы видите, и что такое информация? Это элемент кнопки? – jrturton
Извините - я изменил на более общее именование и пропустил этот экземпляр (отредактировал informationButton to button). У меня нет проекта, но он был «непризнанным селектором, посланным экземпляру ...» в строке getFrame, я считаю. Я могу уточнить позже. –
Вот как я догадался, я пошел вперед и все равно ответил ... – jrturton