Как сделать так, чтобы камера появлялась каждый раз, когда я нажимаю на определенную вкладку? - PullRequest
1 голос
/ 24 марта 2012

информация: xcode 4.3.2, iOS5, с использованием раскадровки.

Создан проект из шаблона xcode "Приложение с вкладками".
Сделал:

@implementation SUSecondViewController
UIImagePickerController *pic;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    pic = [[UIImagePickerController alloc] init];
    pic.delegate = self;
   // [pic setSourceType:UIImagePickerControllerSourceTypeCamera];
    [self presentModalViewController:pic animated:YES];
}

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

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

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

Используйте его на viewDidAppear:, как на viewDidLoad, возможно, некоторые вещи, связанные с пользовательским интерфейсом, не будут работать, поскольку Nib не полностью загружен, пока viewDidLoad не завершит выполнение.

Итак, я хотел бы, чтобы вы написали это на viewDidAppear:, как показано ниже

@implementation SUSecondViewController
UIImagePickerController *pic;

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    // Do any additional setup after loading the view, typically from a nib.
    pic = [[UIImagePickerController alloc] init];
    pic.delegate = self;
   // [pic setSourceType:UIImagePickerControllerSourceTypeCamera];
    [self presentModalViewController:pic animated:YES];
}

Надеюсь, это поможет вам.

2 голосов
/ 24 марта 2012

viewDidLoad происходит только при загрузке представления.

Если представление исчезает / появляется снова, не гарантируется, что представление будет выгружено / загружено.Возможно, потому что где-то еще есть сильный указатель на viewController, и системе не нужно освобождать некоторую память.

Если вы хотите, чтобы он вызывался каждый раз, когда появляется представление, поместите этот код в UIViewControllers.

- (void)viewDidAppear

метод вместо

- (void)viewDidLoad

Вы также можете посмотреть здесь: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html#//apple_ref/doc/uid/TP40007457-CH10-SW1

...