Iphone 尝试通过点击“使用委派取消”关闭视图控制器(根本不工作)
在导航控制器中具有两个视图控制器:Iphone 尝试通过点击“使用委派取消”关闭视图控制器(根本不工作),iphone,uiviewcontroller,delegation,popviewcontroller,Iphone,Uiviewcontroller,Delegation,Popviewcontroller,在导航控制器中具有两个视图控制器: PhoneNumbersTVC>保存由NewPhoneNumberTVC NewPhoneNumberTVC>用于添加电话号码的控制器 当我点击NewPhoneNumberTVC上的取消按钮时,我想返回phoneNumberTVC,并进行如下授权 电话号码tvc.h #import <UIKit/UIKit.h> #import "NewPhoneNumberTVC.h" @interface PhoneNumbersTVC : UITableV
PhoneNumbersTVC
>保存由NewPhoneNumberTVC
NewPhoneNumberTVC
>用于添加电话号码的控制器
当我点击NewPhoneNumberTVC
上的取消按钮时,我想返回phoneNumberTVC
,并进行如下授权
电话号码tvc.h
#import <UIKit/UIKit.h>
#import "NewPhoneNumberTVC.h"
@interface PhoneNumbersTVC : UITableViewController <NewPhoneNumberTVCDelegate>
@end
#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
新电话号码vc.h
#import <UIKit/UIKit.h>
#import "NewPhoneNumberTVC.h"
@interface PhoneNumbersTVC : UITableViewController <NewPhoneNumberTVCDelegate>
@end
#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
上的cancel时,我看到上面的方法CancelBTantaped
启动,但是委派
不起作用,没有方法在PhoneNumberTvc
中执行。视图没有消失,我也没有看到:console上的cancelBtnWasTappedOnNewPhoneNumberTVC
。例如,PhoneNumbersTVC.m中应该存在一些代码:
NewPhoneNumberTVC *myNewPhoneNumberTVC = [[NewPhoneNumberTVC alloc] init];
myNewPhoneNumberTVC.delegate = self;
您可以按以下方式登录以验证是否成功设置了委托“
NewPhoneNumberTVC.m
- (void)saveBtnWasTappedOnNewPhoneNumberTVC:(NewPhoneNumberTVC *)newPhoneNumberTVC
{
NSLog(@"saveBtnWasTappedOnNewPhoneNumberTVC");
[newPhoneNumberTVC.navigationController popViewControllerAnimated:YES];
}
- (void)cancelBtnWasTappedOnNewPhoneNumberTVC:(NewPhoneNumberTVC *)newPhoneNumberTVC
{
NSLog(@"cancelBtnWasTappedOnNewPhoneNumberTVC");
[newPhoneNumberTVC.navigationController popViewControllerAnimated:YES];
}
- (IBAction)cancelBtnTapped:(UIBarButtonItem *)sender
{
NSLog(@"cancelBtnTapped");
self.phoneNumberTextField.text = @"";
self.phoneKindTextField.text = @"";
[self.delegate cancelBtnWasTappedOnNewPhoneNumberTVC:self];
- (IBAction)cancelBtnTapped:(UIBarButtonItem *)sender
{
NSLog(@"cancelBtnTapped");
self.phoneNumberTextField.text = @"";
self.phoneKindTextField.text = @"";
NSLog(@"self.delegate :%@",self.delegate);
[self.delegate cancelBtnWasTappedOnNewPhoneNumberTVC:self];
}
你确定你已经设置了代理吗?如果是,你在什么时候设置代理?你在哪里设置了NewPhoneNumberTVC的代理?@lu yuam我告诉代理在方法中点击了取消:cancelBtnTapped
[self.delegate cancelBtnWasTappedOnNewPhoneNumberTVC:self]我自己刚找到的。完全忘了。谢谢!