IBActions не работают в другом viewcontroller - PullRequest
0 голосов
/ 07 октября 2010

Я создал проект, который имеет разные xib viewcontrollers. В первом представлении я выбираю изображение через контроллер выбора и отображаю его во втором viewcontroller. Во втором представлении у меня есть несколько кнопок, и я дал им некоторые IBActions. Здесь начинается моя проблема, которая успешно отображает изображение в secondviewcontorller, но когда я нажимаю на кнопку в этом приложении viewcontroller, приложение завершается, и отладчик, отображающий сообщение об ошибке как , завершает программу из-за необработанного исключения

Вот код:

Для выбора картинки через контроллер выбора в первом виде

-(IBAction)btnChoosePicClicked {
    if([UIImagePickerController         isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {
        UIImagePickerController *picker=[[UIImagePickerController alloc] init];
        picker.delegate=self;
        picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;  
        [self presentModalViewController:picker animated:YES];
        [picker release];

    }
    else 
    {
        UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Error accessing photo library"   message:@"Device does not support a photo library" delegate:nil cancelButtonTitle:@"Drat!"                   otherButtonTitles:nil];

        [alert show];
        [alert release];
    }

}

отображение во втором виде и назначение действий .h файл

@interface editScreen : UIViewController{
    IBOutlet UIButton *btnRotate;
    IBOutlet UIButton *btnLibrary;
    IBOutlet UIImageView *imgView;
    int RotateAngle;
}
-(void)setImage:(UIImage *)img;
-(IBAction)btnLibraryClicked;
-(IBAction)RotateImage;
@end

.m файл

@implementation editScreen
-(void)setImage:(UIImage *)img
{
    [imgView setImage:img];
    imgView.userInteractionEnabled = YES;
}
-(IBAction)RotateImage
{
    CGAffineTransform transform = imgView.transform;
    transform = CGAffineTransformRotate(transform, M_PI/2);
    imgView.transform=transform;

    RotateAngle+=90;

    if(RotateAngle>=360)
    {
        RotateAngle-=360;
    }
    //imageview.transform = CGAffineTransformScale(imageview.transform, -1.0, 1.0);
}
-(IBAction)btnLibraryClicked {


    if([UIImagePickerController                   isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {
        UIImagePickerController *picker=[[UIImagePickerController alloc] init];
        picker.delegate=self;
        picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;  
        [self presentModalViewController:picker animated:YES];
        [picker release];
        // NSFileHandle *fileHandle = [[NSFileHandle alloc]initWithFileDescript
    }
    else 
    {
        UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Error accessing photo library" message:@"Device does not support a photo library" delegate:nil cancelButtonTitle:@"Drat!" otherButtonTitles:nil];

        [alert show];
        [alert release];
    }

}

Я не знаю, что не так с моим кодом, пожалуйста, помогите мне. Я установил соответствующие соединения в IB .. Заранее спасибо

1 Ответ

0 голосов
/ 07 октября 2010

Для некоторого класса UIKit его делегат имеет несколько методов, которые должны быть реализованы. Например, UIImagePickerViewControllerDelegate должен реализовывать следующие методы:

  • - imagePickerController: didFinishPickingMediaWithInfo:
  • - imagePickerControllerDidCancel:

Для ваших приведенных выше кодов я не знаю, реализованы ли эти методы или нет. Надеюсь, что эта информация поможет вам.

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