Действия кнопки просмотра предупреждений не работают - PullRequest
1 голос
/ 01 февраля 2012

Я использую вид оповещения, чтобы вызвать всплывающее окно, где пользователь выберет либо выбрать фотографию из библиотеки, либо сделать фотографию для использования.Представление предупреждений появляется нормально, но когда я выбираю кнопку, код, который я реализовал, не запускается?!?

по какой-то причине - (void)picturePopup:(UIAlertView *)picturePopup clickedButtonAtIndex:(NSInteger)buttonIndex, похоже, даже не запускается !?Я заблудился по многим учебникам и сайтам, но не понимаю почему ?!Пожалуйста, помогите!

код: .m

#import "LoadViewController.h"

@implementation LoadViewController

int imageCase;

- (IBAction)pick:(id) sender {

    imageCase = [sender tag];

    UIAlertView *picturePopup = [[UIAlertView alloc] 
    initWithTitle:@"Select Photo" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Choose From Library", @"Take Photo", nil];
    [picturePopup show];

}

- (void)picturePopup:(UIAlertView *)picturePopup clickedButtonAtIndex:(NSInteger)buttonIndex {

        NSLog(@"***************getting here****************");

    if (buttonIndex == 1) {

        NSLog(@"***************library****************");
        //Library Picker
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:picker animated:YES];
    }
    if (buttonIndex == 2) {
        NSLog(@"***************camera****************");
        //Camera
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:picker animated:YES];
    }



}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
    switch (imageCase) { 
        case 1: 
            imageView1.image = image;
            break; 
        case 2: 
            imageView2.image = image;
            break; 
    }

    [picker.parentViewController dismissModalViewControllerAnimated:YES];

}


- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [picker.parentViewController dismissModalViewControllerAnimated:YES];
}



@end

.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface LoadViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIAlertViewDelegate> {
    IBOutlet UIImageView *imageView1;
    IBOutlet UIImageView *imageView2;
}


- (IBAction)pick:(id) sender;

@end

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Вам необходимо использовать фактический метод делегата:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

Это не то же самое, что:

- (void)picturePopup:(UIAlertView *)picturePopup clickedButtonAtIndex:(NSInteger)buttonIndex

Сигнатуры методов отличаются.alertView:clickedButtonAtIndex: против picturePopup:clickedButtonAtIndex:

Вы можете переименовать переменную, вы просто не можете изменить сигнатуру метода.

0 голосов
/ 01 февраля 2012

Это не по теме, но я заметил, что вы не синтезировали * imageView1 и * imageView2 .лол

...