怎么在一个类中调用另一个类的方法

 我来答
野人无事不言L
2016-09-15 · TA获得超过1413万个赞
知道顶级答主
回答量:2242万
采纳率:0%
帮助的人:144.9亿
展开全部
tableView:didSelectRowAtIndexPath: 是一种委托方法。你不应该直接调用它。它被要求你选定的表视图行时。
应创建一个委托时为 LeftController,所以 LeftController 可以保持该委托其自己的连接。
在LeftController.h中的实现:
@class LeftController;

@protocol LeftControllerDelegate
-(void)leftController:(LeftController *)leftController didSelectTableView:(UITableView *)tableView rowAtIndexPath:(NSIndexPath *)indexPath;
@end

@interface LeftController : UIViewController
@property(nonatomic, weak) id<LeftControllerDelegate> delegate;
// ... other public properties
-(id)initWithDelegate:(id<LeftControllerDelegate>)delegate;
// ... other public methods
@end

在LeftController.m中的实现:
-(id)initWithDelegate:(id<LeftControllerDelegate>)delegate
{
self = [super init];
if (self) {
self.delegate = delegate;
}
return self;
}

-(void)viewDidLoad
{
[super viewDidLoad];
//create the tableView...

//set the tableView delegate
tableView.delegate = self;

//do other view setup...
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.delegate leftController:self didSelectTableView:tableView rowAtIndexPath:indexPath];
}

在其他视图控制器实现中,例如MyOtherController.m:
//create instance of LeftController that has self as delegate
LeftController *left = [[LeftController alloc] initWithDelegate:self];

与实现委托方法:
-(void)leftController:(LeftController *)leftController didSelectTableView:(UITableView *)tableView rowAtIndexPath:(NSIndexPath *)indexPath
{
//Yay! This instance of MyOtherController has received the delegate message from LeftController, including details of table view and row selected.
}

有效地在这里,你有委派连接消息到 LeftController,并反过来你授权的 LeftController 功能给其委托。当您创建并初始化它的 init 方法中设置其委托。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式