2010-02-26 1 views
3

Я только начал заниматься разработкой iPhone. Я учился в учебниках и материалах из книг, чтобы понять, как правильно. Я исхожу из PHP и Java-фона ... Objective-C немного причудливый. Но я лучше всего учусь, мокрый.iPhone dev noob вопрос: вызывать действие явно при запуске приложения

В принципе, у меня есть эти действия. На мой взгляд, getPhoto привязан к нескольким UIBarButtonItems.

-(IBAction) getPhoto:(id) sender { 
    UIImagePickerController * picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 

    if((UIBarButtonItem *) sender == choosePhoto) { 
     picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
    } else { 
     picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    } 

    [self presentModalViewController:picker animated:YES]; 
} 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [picker dismissModalViewControllerAnimated:YES]; 
    theimageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
} 

Моя цель - вызвать одно и то же действие после запуска приложения, автоматически открывая камеру. Как я могу это сделать?

+1

В моей самости назначаемой роли интерфейса нацист, я должен спросить: Будут ли ваши пользователи ожидают, что приложение, чтобы открыть для камеры? В первый раз, когда они будут использовать его, им будет ясно, почему камера выскочила? Если ваше приложение не названо «Take Picture» или что-то столь же вызывающее воспоминания, прыгая прямо, камера может вызвать путаницу. – TechZen

+1

Кроме того, метод не связан с действиями. Связывание имеет специфическое значение в API Apple и его важный долгосрочный опыт, чтобы не путать его. Если вы думаете о методе, связанном с пуговицами, в мир беспорядков. Вместо этого кнопки отправляют сообщение объекту в виде вызова метода действия. Действие в IB просто указывает кнопке, какой объект должен быть нацелен, и какое сообщение отправить. – TechZen

ответ

3

EDIT:

По this SO question вы фактически должны поместить его в viewWillAppear или viewDidAppear


Добавить аналогичный метод к методу ApplicationDidFinishLaunching в приложение делегата.

Может быть лучше, чтобы поместить вызов в ViewDidLoad вашего контроллера вида корневой

+0

Нравится? [self getPhoto]; Или как? –

+0

Ну да, вы не хотите использовать отправителя из делегата приложения. Возможно, вам придется изменить существующий метод или запустить один из них, поскольку отправитель в этом случае будет делегатом приложения – conorgriffin

+0

, см. Править и ответ от jm ниже. В этом случае метод viewDidLoad, вероятно, более подходит – conorgriffin