2012-02-20 2 views
0

Если у меня есть uitableview в uitableview (да, ячейки таблицы верхнего уровня - таблицы, но неважно) на вкладке вкладки, и пользователь выбирает строку, как я могу получить доступ к выбранному элементу из моего appdelegate и из вкладки табуляцииКак получить доступ к выбранному элементу uitablview из appdelegate?

В основном вопрос, который у меня есть, заключается в том, что у вас есть var где-то глубоко в вашем представлении heirachry, как можно контролировать элемент управления табло или appdelegate?

ответ

1

Обычно я использую определенный класс для хранения таких переменных. Источник выглядит примерно так:

static UIView *__someView = nil; 
@implementation VariableContainer 
+ (void)setSomeView:(UIView *)someView { 
    __someView = someView; 
} 
+ (UIView *)someView { 
    return __someView; 
}  
@end 

При создании какого-то объекта, который вы хотите получить доступ из некоторых удаленного объекта, вы просто звоните [VariableContainer setSomeView:] и, когда вам нужно получить к нему доступ [VariableContainer someView].

Это всего лишь один из многих способов добиться этого же результата. Несколько советов об этом одном:

  • для каждого пользовательского объекта (например, ваше приложение делегата) положить в заголовке «@class Objectname»
  • попробуйте импортировать этот контейнер только в исходные файлы (без заголовков)
  • не использовать сохранить, только слабые звенья
  • вы можете поместить столько объектов, сколько вы хотите так что есть только один контейнер

Я надеюсь, что это помогает немного.

+0

Я получаю верхнюю половину этого, но список пули не так много. Можно ли привести пример реализованных пуль? Конечная пуля говорит о нескольких объектах, но someview a uiview var не массив – jdog

+0

Если вам нужен массив массивов na. Я имел в виду статический UIView * __ someView; static ApplicationViewController * __ mainViewController; ... Все, что вам нужно. И создавайте сеттеры и геттеры для каждого. Для удерживающей части вам, вероятно, не нужно сохранять эти объекты. Если вам это нужно, вы должны выпустить их явно (вы забудете) Не импортируйте контейнер в файлы заголовков. На практике он может создавать неприятные ошибки, если не использовать только ссылки. Для передачи ссылок пользовательских объектов, таких как «AppNameViewController», вам нужно будет импортировать его заголовок. Скорее напишите @class AppNameViewController –