передать данные в объект uiviewcontroller на iPhone - PullRequest
0 голосов
/ 27 августа 2009

У меня есть приложение для iPhone с контроллером tableview. Когда вы щелкаете по определенной ячейке, она открывает новый контроллер uiview с этим кодом:

 nextViewController = [[avTouchViewController alloc] initWithNibName:@"avTouchViewController" bundle:nil];

Вышеуказанный контроллер uiviewcontroller, называемый avTouchViewController, имеет свойство, которое выглядит следующим образом:

IBOutlet SomeObject *controller;

SomeObject - это объект со всеми соответствующими свойствами представления.

Я хотел бы передать параметр nsstring из tableviewcontroller, с которым я инициализирую avTouchViewController, в someObject.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 27 августа 2009

Я немного смущен вашим вопросом; вы говорите, что создаете свои avTouchViewController s, когда ячейка используется внутри существующего UITableView, но ваша последняя часть описывает обратную ситуацию.

В основном, если вы хотите передать информацию в контроллер представления, просто дайте ему свойство, которое можно установить (что может уже иметь место), например ::

nextViewController = [[avTouchViewController alloc] initWithNibName:@"avTouchViewController" bundle:nil];
nextViewController.controller = theInstanceOfSomeObjectIWantToPass;

Вы также можете переименовать вашу controller собственность. Для читателя не имеет смысла, что у контроллера представления есть свойство с именем controller, которое на самом деле является SomeObject*. Кроме того, имена ваших классов должны быть написаны заглавными буквами, то есть использовать AvTouchViewController вместо avTouchViewController.

0 голосов
/ 27 августа 2009

Если бы я делал это, я бы добавил свой собственный инициализатор в мой подкласс UIViewController:

- (id)initWithController:(NSString *pController) {
    if (self = [super initWithNibName:@"avTouchViewController" bundle:nil]) {
        self.controller = pController;
    }
    return self;
}

А затем просто вызовите следующее (в tableView: didSelectRowAtIndexPath: или где угодно):

NSString *controller = @"Sample String";

AVTouchViewController *nextViewController = [[AVTouchViewController alloc] initWithController:controller];
[controller release];

[self.navigationController pushModalViewController:nextViewController animated:YES];
[nextViewController release];

Как точка стиля, имена классов обычно начинаются с заглавных букв (отсюда и мое изменение на AVTouchViewController).

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