[英]Calling a method in the ViewController from a subClass
我想知道如何从子类调用 ViewController 中的方法?
我试图从我的 subClass.m 文件的 viewDidLoad 中调用它,但是 xCode 告诉我对成员“viewController”的请求不是结构或联合:
[self.viewController tabAdd:@"Extra" inColour:@"Green" withReference:0];
[self.viewController resetTabsView];
在我的 viewController 中,我定义了如下方法:
-(void)tabAdd:(NSString *)newTabTitle inColour:(NSString *)newTabColour withReference:(NSUInteger)newTabReference;
-(void)resetTabsView;
谢谢你的帮助!
这就是我设置VC和子类的方式......
(1) TabsEdit.H:
#import <UIKit/UIKit.h>
#import "MyViewController.h"
@interface TabsEdit : MyViewController <UITextFieldDelegate> {
IBOutlet UITextField *enterTitle;
}
@property (nonatomic, retain) UITextField *enterTitle;
@end
(2) MyViewController.H:
//
#import <UIKit/UIKit.h>
#import "TabsEdit.h"
@class TabsEdit;
@interface MyViewController : UIViewController <UITextViewDelegate, UITextFieldDelegate> {
// ...
//@property (nonatomic, retain) TabsEdit *tabsEdit;
在 M. 文件中:
@synthesize tabsEdit;
我像这样初始化它:
TabsEdit *tEdit = [[TabsEdit alloc] initWithNibName:@"TabsEdit" bundle:nil];
self.tabsEdit = tEdit;
[self.view addSubview:tEdit.view];
[tEdit release];
[自我标签添加:。 .....]
你是VC派生的,所以直接调用方法。
我认为你也可以做一个 [super tabAdd: .....]。
根据上面的评论,您需要您的子 class 来说明它是什么子 class。 界面的第一行应该是:
@interface TabsEdit : MyViewController <UITextFieldDelegate> {
然后正如@DavidNeiss 所说,在子类中使用 [self tabAdd: ...] 。 class 可以使用“self”调用它自己的所有方法以及属于其父类的所有方法。
如果您用自己的方法覆盖了父类的方法,并且您需要调用父类的方法而不是您自己的方法,请使用“super”。 例如,当您为子类自定义 -(id)init 时,您应该在其中的某个地方调用 [super init] 以处理父 class 在其 -(id)init 中所做的任何设置。
如果您想从子类中调用超级 class 中的方法,只需 go:
[super methodName];
我不明白你为什么只能 go [self methodName];
任何一个。 子类应该可以访问所有超类方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.