ViewController в MVC, в XCode - PullRequest
       5

ViewController в MVC, в XCode

0 голосов
/ 05 октября 2011

быстрый вопрос,

Я баловался с XCode выключенным поздно и пытаюсь понять View Controller, хотя я получаю все подробности, одну вещь, которую я не вижу, это то, где View ControllerОбъект класса создается.По сути, это класс и, следовательно, должен иметь экземпляр объекта, чтобы иметь возможность отправлять ему сообщения.

Это как бы заставило меня почесать голову.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Контроллер представления создается в его функции инициализации, обозначенной следующим образом:

-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
    if( (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) )
    {
         // Custom initialization
    }
    return self;
}

Как вы, возможно, заметили в некоторых примерах Apple или в любом другом исходном коде, который вы просматривали, вы могли видеть строку кода, похожую на

MyViewController* viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];

Это где / когда создается экземпляр контроллера представления. Вы заметите, что контроллер представления имеет объект-член типа UIView, называемый view, именно он добавляется в окно или представление, от которого это представление должно быть отделено. Контроллер представления создан для обработки сообщений, относящихся к этому представлению. Это все прописано здесь .

0 голосов
/ 05 октября 2011

Он создается всякий раз, когда его нужно отобразить. Вы.

Например, если вы хотите отобразить новый вид в стеке навигации при нажатии кнопки?

-(IBAction)buttonClicked:(id)sender{
    /* Create VC here */
    YourViewController *controller = [[YourViewController alloc]initWithNibName:@"ViewName"];

    /* Push */
    [self.navigationController pushViewController:controller animated:YES];

    /* Let go since you don't have control over it anymore. */
    [controller release];
}

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

Теперь (при условии, что iOS5 вышла из NDA теперь, когда большая часть была объявлена ​​сегодня), вы можете использовать раскадровку в XCode, которая справится со всем этим для вас.

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