我有一个班级UIViewController
而里面我有一个按钮,我想从另一个班级调用一个方法
你能不能帮我实现按钮的动作
我是objective-c
的新手我的按钮UIViewController
中的操作:
- (IBAction)ActionButton:(id)sender {
NSLog(@"A1");
}
WebViewControlle
中的方法:
-(void)loadWebView{
NSURL *url = [NSURL fileURLWithPath:[ [ NSBundle mainBundle ] pathForResource:
@"TestName/TestName1/Test1Name1" ofType:@"html" ]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
我的问题是如何将此方法调用到我的按钮,因为它在另一个视图中?
我的WebViewController
中有一种方法,我想通过UIViewController
答案 0 :(得分:1)
你可以试试这个:
假设您有一个名为ViewA
的类来实现该方法。
如果您希望按钮操作调用该方法,则需要具有另一个类的实例。
-(void)loadWebView{
NSURL *url = [NSURL fileURLWithPath:[ [ NSBundle mainBundle ] pathForResource:
@"TestName/TestName1/Test1Name1" ofType:@"html" ]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
按钮VIEW:
#import "ViewA.h"
ViewA *instanceOfViewA;
// assign an instance to instanceOfViewA
你的按钮方法:
- (IBAction)ActionButton:(id)sender {
NSLog(@"A1");
[yourButton addTarget:instanceOfViewA
action:@selector(loadWebView)
forControlEvents:UIControlEventTouchUpInside];
}
答案 1 :(得分:0)
您可以在主视图控制器中存储对WebViewController的引用,并向该引用发送消息,检查我的answer。
代码:
MyViewController.h
中的:
@class WebViewController;
...
@interface MyViewController
{
...
}
@property (nonatomic, retain) IBOutlet WebViewController* webViewController;
...
MyViewController.m
中的:
#import "WebViewController.h"
...
@implementation MyViewConroller
@synthesize webViewController;
...
- (void) dealloc {
...
self.webViewController = nil;
...
[super dealloc];
}
在IB中分配你的WebViewController(就像你用按钮和东西做的那样),然后在代码中分配:
- (IBAction)ActionButton:(id)sender {
NSLog(@"A1");
[self.webViewController loadWebView];
}
答案 2 :(得分:0)
您可以使用通知或委托,或在UIViewController中引用WebViewController。