我是新來的Objective C,我無法讓委託在我的代碼中工作。從彈出窗口類調用委託方法
我有一個名爲cViewController的類,在這個類中有一個UIWebView來獲取網頁和它上面的一個按鈕,它調用一個名爲prodMenu的彈出類。我遇到的麻煩是,從prodMenu類調用網頁並將其顯示在父UIWebView上的功能不起作用。
cViewController.h
#import <UIKit/UIKit.h>
#import "prodMenu.h"
@interface cViewController : UIViewController <prodMenuDelegate>{
UIPopoverController *cpopover;
IBOutlet UIWebView *webImageDisplay;
}
@property (nonatomic, retain) UIWebView *webImageDisplay;
@property (nonatomic, retain) UIPopoverController *cpopover;
- (IBAction)cPopoverTapped:(id)sender;
- (void) fetchWebsite:(NSString *)website; //This is the delegate method I'm trying to call in the popover class.
@end
cViewController.m
- (IBAction)cPopoverTapped:(id)sender {
prodMenu *tp = [[prodMenu alloc] init];
cpopover = [[UIPopoverController alloc] initWithContentViewController:tp];
[tp release];
CGRect rect = CGRectMake(40, 0, 50, 50);
cpopover.popoverContentSize = CGSizeMake(250, 225);
[cpopover presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
- (void)fetchWebsite:(NSString*)website{ //This function is called by prodMenu class
NSLog(@"address: %@", website);
NSString *urlAddress = website;
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webImageDisplay loadRequest:requestObj];
[webImageDisplay release];
}
- (void)viewDidLoad {
[self fetchWebsite:@"http://www.yahoo.com"];
[super viewDidLoad];
}
prodMenu.h
#import <UIKit/UIKit.h>
@protocol prodMenuDelegate;
@interface prodMenu : UIViewController{
<prodMenuDelegate> delegate;
}
- (IBAction)radBtn:(id)sender; //This is the IBAction that calls the fetchWebsite function
@property (nonatomic, assign) id <prodMenuDelegate> delegate;
@end
@protocol prodMenuDelegate
- (void)fetchWebsite:(NSString *)website;
@end
prodMenu.m
#import "prodMenu.h"
#import "cViewController.h"
@implementation prodMenu
@synthesize delegate;
- (IBAction)radBtn:(id)sender{
[delegate fetchWebsite:@"http://www.google.com"]; //Here is the call to the method
}
我失去了一些東西在這裏調用委託方法?沒有任何錯誤或警告。我想要做的就是當用戶在彈出視圖上按下按鈕時,下面的父類會更改網頁。提前致謝。
prodMenu的實例在哪裏?這就是將cViewController實例分配給「委託」屬性的地方。 – 2011-03-08 15:11:10
對不起,添加了prodMenu的實例 – 2011-03-08 15:37:42