0

今、ボタンで悩んでいます。そのまま、ユーザーはカメラまたは写真ライブラリを使用して写真を撮ることができ、それが選択されると、ボタンを押すことでこの写真を共有できます。ただし、写真を選択する前に共有ボタンを押すと、アプリがクラッシュします。ボタンが押されたときにメディアがない場合、小さな振動とともにアラートメッセージが表示されるように、アクティビティアラートをどのように関与させることができるか興味があります。写真を選択すると、アクティビティ シートが表示され、ユーザーはこのメニューから共有できます。メニューは問題なく動作しますが、if/else ステートメントには欠陥があります。画像は「_timeSlip」で表されます。助けてくれてありがとう!私のコードは次のとおりです。

- (IBAction)shareButtonPressed
{
    if (_timeSlip !=nil)
{
    // Issue vibrate
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"No Photo Chosen"
                                                   message: @"Please Select a Photo"
                                                  delegate: self
                                         cancelButtonTitle:@"Cancel"
                                         otherButtonTitles:@"OK",nil];


    [alert show];
    [alert release];
    }
    else {
    // 
    //step 1: set up path
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    //step 2: get path for local file
    NSString* path = [documentsDirectory stringByAppendingPathComponent:
                  @"time.png" ];

    //UIImage *localImage = [UIImage imageNamed:@"SDBack.png"];

    UIImage *localImage = _timeSlip;



    REMailActivity *mailActivity = [[REMailActivity alloc] init];


    RESaveToCameraRollActivity *saveToCameraRollActivity = [[RESaveToCameraRollActivity alloc] init];
    REPrintActivity *printActivity = [[REPrintActivity alloc] init];
    RECopyActivity *copyActivity = [[RECopyActivity alloc] init];
     // Compile activities into an array, we will pass that array to
    // REActivityViewController on the next step
    //
    NSArray *activities = @[mailActivity, saveToCameraRollActivity, printActivity,copyActivity];
    // Create REActivityViewController controller and assign data source
    //
    REActivityViewController *activityViewController = [[REActivityViewController alloc]       initWithViewController:self activities:activities];
    activityViewController.userInfo = @{
                                    @"image": localImage,
                                    @"text": @"Time Slip!"
                                    };

   [activityViewController presentFromRootViewController];
}
}
4

1 に答える 1

1

提供されたコードと説明に基づいて、_timeslip が nil の場合はアラート/バイブレーションを表示したいようですが、_timeslip が nil でない場合はアラートを表示しています。また、クラッシュは、「else」ステートメントで _timeslip が nil であることが原因である可能性が最も高いです。

于 2013-08-30T23:23:42.630 に答える