1

2 つのラベルを含むカスタム オーバーレイをカメラ ビュー コントローラーに表示しようとしています。imagePickerControllerDidCancel メソッドと alertView を正常に動作させることができませんでした。システムは正しい情報を NSLog に出力していますが、私が書いたコード行は何もしていません。ユーザーが「戻る」をタップすると (alertView をキャンセルして imagePicker に戻る)、カメラは再び表示されますが、takePhoto ボタンが表示されます。および [キャンセル] ボタンにアクセスできなくなりました。それらは引き続き表示されますが、タップすることはできません。ユーザーがインデックス 1 (Leave) のボタンをクリックすると、カメラが閉じられ、ユーザーが tabBarController index:1 にある homeViewController に戻ります。さらに、カメラが最初に読み込まれると、timerLabel は正しいデータで表示されますが、すぐに消えます。私のrefreshLabelメソッドと関係があると感じていますが、どこが間違っているのかはっきりとわかりません。これらのことはどれも私にとってはうまくいきません.私はまだプログラミングの世界に非常に慣れていないので、これらの問題のいずれかを助けていただければ幸いです. ありがとう!

    #import "CameraViewController.h"
    #import "FriendsViewController.h"
    #import <mobileCoreServices/UTCoreTypes.h>

    @interface CameraViewController ()

    @end

    @implementation CameraViewController
    @synthesize  titleLabel;
    @synthesize timerLabel;

    - (void)viewDidLoad
    {   [super viewDidLoad];

        self.recipients = [[NSMutableArray alloc] init];
    }


    - (void)viewWillAppear:(BOOL)animated {
            [super viewWillAppear:animated];

        if (self.image == nil &&  [self.videoFilePath length] == 0) {
            self.imagePickerController = [[UIImagePickerController alloc] init];
            self.imagePickerController.delegate = self;
            self.imagePickerController.allowsEditing = NO;
            self.imagePickerController.videoMaximumDuration = 10;

            if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
                self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;}

                self.imagePickerController.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePickerController.sourceType];
                [self presentViewController:self.imagePickerController animated:NO completion:nil];}

            [[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
            self.overlayView.frame = CGRectMake(160,8,0,0);
            self.imagePickerController.cameraOverlayView = self.overlayView;

            NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
            NSString *deadline = [NSString stringWithFormat:@"%@/deadline.txt",
                                  documentsDirectory];
            NSString *name = [NSString stringWithFormat:@"%@/name.txt",
                                   documentsDirectory];
            NSError *fileError;
            titleLabel.text = [NSString stringWithContentsOfFile:name
                                                        encoding:NSASCIIStringEncoding
                                                           error:&fileError];
            timerLabel.text = [NSString stringWithContentsOfFile:deadline
                                                        encoding:NSASCIIStringEncoding
                                                           error:&fileError];
            if(fileError.code == 0){
                NSLog(@"deadline.txt was read successfully with these contents: %@,",
                      timerLabel.text);
                NSLog(@"name.txt was read successfully with these contents: %@,",
                      titleLabel.text);}

            [NSTimer scheduledTimerWithTimeInterval:1
                                             target:self
                                           selector:@selector(refreshLabel)
                                           userInfo:nil
                                            repeats:YES];
    }

    -(void)refreshLabel;{
        self.formatter = [NSDateFormatter new];
        [self.formatter setDateFormat:@"dd:hh:mm:ss"];

        NSDate *startDate = [self.formatter dateFromString:self.timerLabel.text];
        NSDate *timeLeft = [startDate dateByAddingTimeInterval:-1];
        NSTimeInterval totalCountdownInterval = -1;

        NSTimeInterval elapsedTime = [timeLeft timeIntervalSinceNow];
        NSTimeInterval remainingTime = totalCountdownInterval - elapsedTime;

        if (remainingTime <= 0.0) {
            //dismiss controller and set to homecontroller at tabBar index 1
        }
        self.timerLabel.text = [self.formatter stringFromDate:timeLeft];
    }



    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Are you Sure?"
                                                            message:@"you can't come back"
                                                           delegate:self cancelButtonTitle:@"Back" otherButtonTitles:@"Yes", nil];
        [alertView show];
    }

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
        if (buttonIndex==1) {
            [self.imagePickerController dismissViewControllerAnimated:NO completion:nil];
            [self.tabBarController setSelectedIndex:1];
            NSLog(@"Leave clicked");
    }
        else {
            [self reset];
            NSLog(@"cancel clicked");
        }
    }
- (void)reset {
    self.image = nil;
    self.videoFilePath = nil;
}
4

0 に答える 0