0

私は自分の問題に対する答えを高低で探してきました。私は UIActionSheet を持っていて、ユーザーがボタンを押してはいけないボタンを押しようとすると、それを起動しています。うまく機能しますが、現在の操作が行われたことをユーザーに知らせる UIAlert を起動しようとしています。停止し、「続行」を押す必要があります... 私の問題は - (void) actionSheet にあります.... メソッドが actionSheet によって呼び出されていないか、buttonIndex が正しく設定されていません。

.h

#import <UIKit/UIKit.h>

@interface DVRRemote : UIViewController <UIActionSheetDelegate>
@property (nonatomic) BOOL pwrOff;
@property (nonatomic) BOOL dvrState;
@property (nonatomic) BOOL playState;
@property (nonatomic) BOOL rcdState;
@property (nonatomic) BOOL rcdPlay;
@property (strong, nonatomic) IBOutlet UISwitch *pwrSwitch;
@property (strong, nonatomic) IBOutlet UITextField *dvrStateLbl;
@property (strong, nonatomic) IBOutlet UITextField *PwrLbl;
- (IBAction)buttonPressed:(UIButton *)sender;
- (IBAction)pwrPressed:(UISwitch *)sender;
@end

ここにコードがUIActionSheetありUIAlertViewます...助けてください。この作業はすでに 2 週間遅れています。

.m

-(IBAction)buttonPressed:(UIButton*)sender
{
    if (_pwrOff == NO)
    {
        if (_rcdPlay == NO)
        {
            if ([sender.currentTitle isEqual: @"Play"])
            {
                _dvrStateLbl.text = @"Playing";
                _playState = YES;
                _rcdState = NO;
            }
        }
        else
        {
            UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Play not Allowed during Record" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Continue" otherButtonTitles:nil];
            [actionSheet showInView: self.view];
        }
    }
}

-(void)actionSheet:(UIActionSheet*)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if (buttonIndex != [actionSheet cancelButtonIndex])
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Playing" message:[NSString stringWithFormat:@"Recording stopped"] delegate:self cancelButtonTitle:@"ok"  otherButtonTitles:nil];
        [alert show];
    }
}

注意してください:私はアラートをすべての下にコーディングしましたbuttonIndex == 0, == 1, == 2...それは表示したくありません。

助けてくれる人に感謝します!よろしく、

4

2 に答える 2

1

次の方法で、ビュー コントローラー (アクション シートのデリゲート メソッドを受け取りたいオブジェクト) にデリゲートを設定する必要があります。

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Play not Allowed during Record" 
    delegate:self 
    cancelButtonTitle:@"Cancel" 
    destructiveButtonTitle:@"Continue" 
    otherButtonTitles:nil];
于 2013-05-20T03:47:12.910 に答える
1

actionSheet デリゲートは nil です。デリゲートを設定していません。

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Play not Allowed during Record" delegate:self cancelButtonTitle:@"Cancel"  destructiveButtonTitle:@"Continue" otherButtonTitles:nil];
[actionSheet showInView: self.view];
于 2013-05-20T03:47:40.887 に答える