我想在其他.m中使用.m中的标识符(实现文件导入)

时间:2014-05-06 23:53:49

标签: ios objective-c uiimagepickercontroller parse-platform

cameraviewcontrolle.mr我使用UIImagePickerController拍摄照片或电影。完成后,我回电话给aanvraagviewcontroller.m

我想通过点按发送按钮来保存图片。

我的问题是,我想如何导入.m文件或​​将照片/电影带到aanvraagviewcontroller.m(我使用Parse.com来保存PFObjects)?

这是cameraviewcontroller.m

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

    if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
        // A photo was taken/selected!
        self.image = [info objectForKey:UIImagePickerControllerOriginalImage];
        if (self.imagePicker.sourceType == UIImagePickerControllerSourceTypeCamera) {
            // Save the image!
            UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil);
        }
    }
    else {
        // A video was taken/selected!
        self.videoFilePath = (__bridge NSString *)([[info objectForKey:UIImagePickerControllerMediaURL] path]);
        if (self.imagePicker.sourceType == UIImagePickerControllerSourceTypeCamera) {
            // Save the video!
            if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(self.videoFilePath)) {
                UISaveVideoAtPathToSavedPhotosAlbum(self.videoFilePath, nil, nil, nil);
            }
        }
    }
    [self uploadMessage];
    [self dismissViewControllerAnimated:YES completion:nil];
    [self.navigationController popToRootViewControllerAnimated:YES];}




- (void)uploadMessage {
    NSData *fileData;
    NSString *fileName;
    NSString *fileType;

    if (self.image != nil) {
        UIImage *newImage = [self resizeImage:self.image toWidth:320.0f andHeight:480.0f];
        fileData = UIImagePNGRepresentation(newImage);
        fileName = @"image.png";
        fileType = @"image";
    }
    else {
        fileData = [NSData dataWithContentsOfFile:self.videoFilePath];
        fileName = @"video.mov";
        fileType = @"video";
    }

    PFFile *file = [PFFile fileWithName:fileName data:fileData];
    [file saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (error) {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"An error occurred!"
                                                                message:@"Please try sending your message again."
                                                               delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alertView show];
        }
        else {//            onderdeelAanvraag[@"file"] = file;
            //            onderdeelAanvraag[@"fileType"] = fileType;
            //            onderdeelAanvraag[@"recipientIDs"] = self.recipients;
            //

            if (error) {
                UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"An error occurred!"
                                                                    message:@"Please try sending your message again."
                                                                   delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alertView show];
            }
            else {
                // Everything was successful!
                [self reset];
            }
            //            }];
        }
    }];
}

- (void)reset {
    self.image = nil;
    self.videoFilePath = nil;
    [self.recipients removeAllObjects];
}

- (UIImage *)resizeImage:(UIImage *)image toWidth:(float)width andHeight:(float)height {
    CGSize newSize = CGSizeMake(width, height);
    CGRect newRectangle = CGRectMake(0, 0, width, height);
    UIGraphicsBeginImageContext(newSize);
    [self.image drawInRect:newRectangle];
    UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return resizedImage;
}

这是aanvraagviewcontroller.m(当按下发送按钮时,我想在这里保存图片/电影);

- (IBAction)verstuurAanvraag:(id)sender {
    NSString *onderdeelOmschrijving  = self.onderdeelOmschrijvingField.text ;
    NSString *autoOmschrijving = self.autoOmschrijvingField.text ;


    if  ([onderdeelOmschrijving length] == 0 ||
         [autoOmschrijving length] == 0)
    {

        UIAlertView *alertView = [[ UIAlertView alloc] initWithTitle:@"Leeg veld" message:@"Vul      de lege velden in" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];

        [alertView show];
    }

    else {

        PFObject *onderdeelAanvraag = [PFObject objectWithClassName:@"Aanvragen"];
        [onderdeelAanvraag setObject:[PFUser currentUser] forKey:@"Aanvrager"];
        onderdeelAanvraag[@"OnderdeelOmschrijving"] = onderdeelOmschrijving;
        onderdeelAanvraag[@"AutoOmschrijving"] = autoOmschrijving;
        NSDate *date = [NSDate date];
        onderdeelAanvraag[@"Datum"] =date;


        onderdeelAanvraag[@"file"] = file;
        onderdeelAanvraag[@"fileType"] = fileType;
        onderdeelAanvraag[@"recipientIDs"] = self.recipients;


        // Get random number between 0 and 999999
        int nummer =  arc4random() % 100000;
        NSLog(@"nieuw nummer %d", nummer);
        [onderdeelAanvraag setObject:[NSNumber numberWithInt:nummer] forKey:@"AanvraagNummer"];


        [onderdeelAanvraag saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
            if (error) {
                UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sorry!" message:  [error.userInfo objectForKey:@"error"] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alertView show];
            }
            else {
                [self performSegueWithIdentifier:@"showRecipients" sender:self];
            }
        }];

    }
}

我解决了通过UITEXTFIELD的问题;

I solved passing textfield data passing with the segue method like here ;  
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"showRecipients"]){
    OntvangersViewController *controller;
    controller = [segue destinationViewController];
    controller.onderdeelOmschrijvingField = self.onderdeelOmschrijvingField;
    controller.autoOmschrijvingField = self.autoOmschrijvingField;
    controller.image = self.image;
    controller.videoFilePath = self.videoFilePath;
    NSLog(@"videofilepath %@", self.videoFilePath);
    controller.recipients = self.recipients;

}

}

1 个答案:

答案 0 :(得分:1)

你的问题很混乱。

.m文件中的代码不与其他.m文件共享。

C .h头文件的重点是头文件可以共享,而实现(.c或.m for Objective C)是私有的,而不是共享。

如果希望某个值对另一个类或同一个类的另一个对象可见,则应在头文件中定义一个属性。

如果您想将值从一个视图控制器传递到另一个视图控制器,则此主题已包含在此处以及其他论坛上。您的帖子上至少有2条评论指向其他主题。