我可以對自定義委託使用一些幫助。我試圖製作一個協議,向其委託發送消息來解除彈出視圖。這是我正在嘗試的。自定義委託,關閉另一個視圖中的彈出框
在popoverViewController.h
#import <UIKit/UIKit.h>
@protocol MyPopoverDelegate <NSObject>
-(void) didSelectLanguage;
@end
@interface Popover : UITableViewController{
id <MyPopoverDelegate> delegate;
NSMutableArray *languageData;
}
@property (nonatomic, assign) id <MyPopoverDelegate> delegate;
@end
.M
@synthesize delegate;
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"You selected %@", [languageData objectAtIndex:[indexPath row]]);
[self.delegate didSelectLanguage];
}
...
而且在呈現酥料餅
#import <UIKit/UIKit.h>
#import "popoverViewController.h"
@interface ChoicesChoices : UIViewController <UIPopoverControllerDelegate, MyPopoverDelegate>{
UIPopoverController *popover;
}
- (IBAction)facebook:(id)sender;
- (IBAction)twitter:(id)sender;
- (IBAction)sms:(id)sender;
- (IBAction)copy:(id)sender;
- (IBAction)email:(id)sender;
- (IBAction)home:(id)sender;
- (IBAction)mute:(id)sender;
- (IBAction)note:(id)sender;
@property (nonatomic, retain) UIPopoverController* popover;
@end
和.M
@synthesize popover;
...
- (void)didSelectLanguage{
[popover dismissPopoverAnimated:YES];
NSLog(@"didSelectLanguage fired");
}
的視圖控制器
當我在彈出式表中選擇一行時,didSelectLanguage不會被調用。關於我可能做錯什麼的想法?謝謝你的幫助。
您確定代理不是'nil'嗎?換句話說,因爲你沒有顯示代碼,我不得不問,你是否真的將委託設置爲你的'ChoicesChoices'視圖控制器的一個實例? – gschandler
我不確定。那將是什麼樣子?它會進入.m嗎? – davis
請參閱下面的示例 – gschandler