-2

ボタン(私の場合は「キャンセル」ボタン)を取得して、前のページに戻る方法を学習しようとしています。前のページにこのページに移動するボタンがあります。このボタンを使用して前のページに戻り、ページに書き込んだものをすべて破棄します。最初のページのボタンは、モーダル接続を介してビューをこのページにプッシュします。[キャンセル]ボタンの単純なモーダル接続を使用して元のページに戻るのが理にかなっていることはわかっていますが、これを行うためのよりエレガントな方法を望んでいました。カスタムビューを作成することは確かに良い考えですが、そこで何をすべきか本当にわかりません。ハハ、でも何か提案をいただければ幸いです。

#import "AddEventViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface AddEventViewController ()
@property (weak, nonatomic) IBOutlet UITextField *textField1;
@property (weak, nonatomic) IBOutlet UITextField *textField2;
@property (weak, nonatomic) IBOutlet UITextField *textField3;
@property (strong, nonatomic) IBOutlet UIScrollView *myScrollView;
@property (weak, nonatomic) IBOutlet UINavigationBar *addEventTitleBar;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *cancelButton;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *saveButton;
@property (weak, nonatomic) IBOutlet UITextView *myTextView;
- (IBAction)textFieldReturn:(id)sender;

@end

@implementation AddEventViewController

@synthesize textField1, textField2, textField3, myTextView;



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (IBAction)textFieldReturn:(id)sender;
{
    [sender resignFirstResponder];
}

- (void)viewDidLoad
{      // Do any additional setup after loading the view.
    [super viewDidLoad];
    self.textField1.delegate = self;
    textField1.delegate = self;
    self.textField2.delegate = self;
    textField2.delegate = self;
    self.textField3.delegate = self;
    textField3.delegate = self;

    [myTextView.layer setCornerRadius:10.0f];
    [myTextView.layer setBorderColor:[UIColor lightGrayColor].CGColor];
    [myTextView.layer setBorderWidth:1.5f];
    [myTextView.layer setShadowColor:[UIColor blackColor].CGColor];
    [myTextView.layer setShadowOpacity:0.002f];
    [myTextView.layer setShadowRadius:3.0f];
    [myTextView.layer setShadowOffset:CGSizeMake(2.0, 2.0)];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)touchesBegan: (NSSet *) touches withEvent: (UIEvent *)event
{
    if (textField1)
    {
        if ([textField1 canResignFirstResponder]) [textField1 resignFirstResponder];
    }
    [super touchesBegan: touches withEvent: event];

    if (textField2)
    {
        if ([textField2 canResignFirstResponder]) [textField2 resignFirstResponder];
    }
    [super touchesBegan: touches withEvent: event];

    if (textField3)
    {
        if ([textField3 canResignFirstResponder]) [textField3 resignFirstResponder];
    }
    [super touchesBegan: touches withEvent: event];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == textField1)
    {
        [textField1 resignFirstResponder];
    }
    else if (textField == textField2)
    {
        [textField2 resignFirstResponder];
    }
    else if (textField == textField3)
    {
        [textField3 resignFirstResponder];
    }
    return YES;
}

-(void)addCancelButton
{
    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"style:UIBarButtonSystemItemAction target:self action:@selector(cancel:)];

    self.navigationItem.leftBarButtonItem = cancelButton;
}

-(void)cancel:(id)sender
{
    [self.navigationController dismissViewControllerAnimated:YES completion:nil];

    [self.navigationController popViewControllerAnimated:NO];
}

@end

問題を修正しました!

4

1 に答える 1

2

あなたはこのようにそれを解決することができます:

- (void)addCancelButton{

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"
                                                                     style:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];


    self.navigationItem.leftBarButtonItem = cancelButton;

}



- (void)cancel:(id)sender{
    //If presented
    [self.navigationController dismissViewControllerAnimated:YES completion:nil];

    //If pushed
    [self.navigationController popViewControllerAnimated:NO];
    }

AddCancelButtonのコードをviewDidLoadまたは適切な場所に移動できる場所。また、追加方法(プッシュ、表示など)に応じて、ビューの削除方法を編集することもできます。

于 2012-12-18T21:00:28.130 に答える