デリゲートパターンの使い方を知っている
- プロトコルを宣言する
- 必須または任意の方法
id<> delegate
財産[delegate respondtoselector:@selector(method)]
- プロトコルの継承
class <someProtocol>
-(void) protolcolMethod
class1Obj.delegate = self;
私は自分のアプリでこのいくつかの場所を使用していますが、今は同じアプリでこれを再度行っていますが、respondtoselector が機能していません。唯一の違いは、今回は NavController にあります。
NavController 親 tableview クラス didselectrow、別のビューをプッシュします。このビューには、presentmadelcontroller を呼び出すボタンがあり、ここでプロトコルを宣言し、navigationContoller 親クラスで継承しました。しかし、なぜそれが機能しないのですか? 私はこれに数時間苦労しています。
このクラスはモーダルに提示され、このプロトコルを宣言します
#import <CoreData/CoreData.h>
@protocol xPro <NSObject>
-(void)xGet;
@end
id<xPro> xDel;
@interface rosterForGroup : UIViewController <NSFetchedResultsControllerDelegate>
{
NSFetchedResultsController *fetchedResultsController;
NSArray *dispName;
}
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@property (strong, nonatomic) id<xPro> xDel;
- (IBAction)xFunc:(id)sender;
@end
.m file ...
- (IBAction)xFunc:(id)sender
{
[xDel xGet];
}
そして、このクラスは NavController 親クラスです
...
@interface groupChatViewController : UIViewController<XMPPRoomDelegate, createNewGroupDelegate, UITableViewDataSource, UITableViewDelegate, xPro>
...
@property (strong, nonatomic) rosterForGroup *xR4G;
...
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
xR4G = [[rosterForGroup alloc]init];
xR4G.xDel = self;
...
-(void)xGet
{
NSLog(@"AAAAAAH");
}
これらの奇妙なオブジェクト名は避けてください。
rosterforgroup 割り当て/初期化
- (IBAction)openGroupOptions:(id)sender
{
roster4Group = [[rosterForGroup alloc]init];
[roster4Group setDelegate:self];
[self presentModalViewController:roster4Group animated:true];
//[xmppRoom fetchMembersList];
}