0

ナビゲーション コントローラー内に 2 つのビュー コントローラーがある場合:

PhoneNumbersTVC> によって追加された電話番号のリストを保持 > 電話番号を追加するNewPhoneNumberTVC NewPhoneNumberTVCためのコントローラー

キャンセルをタップすると、次のように委任NewPhoneNumberTVCに戻るのが好きです。PhoneNumbersTVC

PhoneNumbersTVC.h

#import <UIKit/UIKit.h>
#import "NewPhoneNumberTVC.h"

@interface PhoneNumbersTVC : UITableViewController <NewPhoneNumberTVCDelegate>

@end

PhoneNumbersTVC.m

- (void)saveBtnWasTappedOnNewPhoneNumberTVC:(NewPhoneNumberTVC *)newPhoneNumberTVC
{
    NSLog(@"saveBtnWasTappedOnNewPhoneNumberTVC");
    [newPhoneNumberTVC.navigationController popViewControllerAnimated:YES];
}

- (void)cancelBtnWasTappedOnNewPhoneNumberTVC:(NewPhoneNumberTVC *)newPhoneNumberTVC
{
    NSLog(@"cancelBtnWasTappedOnNewPhoneNumberTVC");
    [newPhoneNumberTVC.navigationController popViewControllerAnimated:YES];
}

NewPhoneNumberTVC.h

#import <UIKit/UIKit.h>

@class NewPhoneNumberTVC;

@protocol NewPhoneNumberTVCDelegate <NSObject>

- (void)saveBtnWasTappedOnNewPhoneNumberTVC:(NewPhoneNumberTVC *)newPhoneNumberTVC;
- (void)cancelBtnWasTappedOnNewPhoneNumberTVC:(NewPhoneNumberTVC *)newPhoneNumberTVC;

@end


@interface NewPhoneNumberTVC : UITableViewController

@property (weak, nonatomic) id <NewPhoneNumberTVCDelegate> delegate;
@property (strong, nonatomic) NSManagedObjectContext *managedOC;

@property (weak, nonatomic) IBOutlet UITextField *phoneNumberTextField;

- (IBAction)saveBtnTapped:(UIBarButtonItem *)sender;
- (IBAction)cancelBtnTapped:(UIBarButtonItem *)sender;

@end

NewPhoneNumberTVC.m

- (IBAction)cancelBtnTapped:(UIBarButtonItem *)sender
{
    NSLog(@"cancelBtnTapped");
    self.phoneNumberTextField.text = @"";
    self.phoneKindTextField.text = @"";
    [self.delegate cancelBtnWasTappedOnNewPhoneNumberTVC:self];

}

キャンセルをタップするとNewPhoneNumberTVC、上記のメソッドcancelBtnTappedが起動するがdelegation機能しないことがmethodわかりPhoneNumbersTVCます。ビューが消えず、表示されません: cancelBtnWasTappedOnNewPhoneNumberTVCon console

4

1 に答える 1

0

このメソッドcancelBtnWasTappedOnNewPhoneNumberTVC:を呼び出す場合は、オブジェクトのデリゲートをNewPhoneNumberTVCオブジェクトに設定する必要がありPhoneNumbersTVCます。たとえば、PhoneNumbersTVC.mにいくつかのコードが存在する必要があります。

NewPhoneNumberTVC *myNewPhoneNumberTVC = [[NewPhoneNumberTVC alloc] init];
myNewPhoneNumberTVC.delegate = self;

次のようにログインして、デリゲートが正常に設定されているかどうかを確認できます」

NewPhoneNumberTVC.m

- (IBAction)cancelBtnTapped:(UIBarButtonItem *)sender
{
NSLog(@"cancelBtnTapped");
self.phoneNumberTextField.text = @"";
self.phoneKindTextField.text = @"";
NSLog(@"self.delegate :%@",self.delegate);
[self.delegate cancelBtnWasTappedOnNewPhoneNumberTVC:self];
}
于 2013-03-09T16:05:25.550 に答える