Перезагрузить данные в общем UIView - PullRequest
0 голосов
/ 06 декабря 2011

Обычно это действительно звучит как совершенно простая задача: у меня есть представление, и я хочу перезагрузить его данные после того, как они были изменены в другом представлении.Но: это не UITableView, и я не использовал InterfaceBuilde, представление создается программно.Значения, отображаемые в текстовых полях, хранятся в NSDictionary.В другом представлении ключ для отображаемого значения изменяется, поэтому я хотел бы просмотреть новое значение, если представление снова возвращается.Итак, вот мой код:

- (void)loadView 
{
...
NSMutableDictionary *selection = [[ValueDispatcher dispatcher] selectionIndex];
NSDictionary *labels = [[ValueDispatcher dispatcher] labelDic];    
NSDictionary *values = [[ValueDispatcher dispatcher] valDic];

NSEnumerator *theKeys = [labels keyEnumerator];
while (key = [theKeys nextObject])
{
    CGRect frame = CGRectMake(10, i, 300, 30 );
    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    [label setText:[labels objectForKey:key]];
    [[self view] addSubview:label];

    CGRect fieldFrame = CGRectMake(10, i + 40, 300, 30 );
    textField = [[UITextField alloc] initWithFrame:fieldFrame];

    [textField setText:[[values objectForKey:key] objectForKey:[selection objectForKey:key]]];
    [[self view] addSubview:textField];
}
    ....

, когда мое представление вернулось, старые значения все еще отображаются, и ничего не изменилось.Какой метод я должен использовать?Я уже пробовал reloadInputViews, но он не работал, другие известные мне методы (reloadData) работают только для TableView ...

1 Ответ

2 голосов
/ 06 декабря 2011

В случае, если этот вид скрыт / нажат / вне экрана при изменении значений и становится видимым впоследствии, например, через. выскочив из стека навигации, вы можете использовать viewWillAppear:animated: для обновления ваших полей. В любом случае вы должны отделить обновление и создание представления.

То есть в loadView просто создайте эти представления, а в другом методе (например, updateData) обновите их отображаемые данные. Для хранения ссылки на эти подпредставления вы можете использовать теги или соответствующие переменные экземпляра в вашем viewController.

В loadView вы можете вручную вызывать updateData, а также viewWillAppear:animated:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...