IOS学习之路十七(通过delegate进行页面传值)

本文介绍如何使用Delegate协议在iOS应用的两个页面间传递值。通过定义协议并实现在不同控制器中,可以完成从MenuViewController到ToDoViewController的数据传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加入有A B两个页面,要实现从A跳到B的时候把值传过去,现在用delegate协议来实现

在A中定义一个协议,定义一个实现该协议的属性变量

在B中定义一个值(要获得的值类型)和set方法。

要传值B 必须实现A中定义的协议。

在A中获得B的指针调用set方法传值。

实例:(我的例子A是一个TableView)

A:(MenuViewController)

#import <UIKit/UIKit.h>
//声明协议
@protocol ToTopPassValueDelegate;

@interface MenuViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>{
 }
//声明实现协议的变量(ID类型)
@property (nonatomic,retain) id<ToTopPassValueDelegate> passValueDelegate;
@property (weak, nonatomic) IBOutlet UITableView *leftTableView;
@property (nonatomic,copy) NSArray *arrayData;

@end

//定义协议
@protocol ToTopPassValueDelegate
- (void)setValue:(NSString *)value;
@end

.m文件:


@synthesize passValueDelegate;
//当点击一个cell时出发,进行传值及跳转
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  
    ToDoViewController *topViewController=[[ToDoViewController alloc] init];
    self.passValueDelegate = topViewController;
    [self.passValueDelegate setValue:[self.arrayData objectAtIndex:indexPath.row]];
//跳转。。。。。

}
@end


B:(ToDoViewController)

#import <UIKit/UIKit.h>
#import "MenuViewController.h"

@interface ToDoViewController : UIViewController<ToTopPassValueDelegate>

@property (nonatomic,copy) NSString *value;

@end

.m文件:
@synthesize value;
-(void) setValue:(NSString *) str{
    NSLog(@"%@",str);
}

原文出处:http://blog.youkuaiyun.com/wildcatlele







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值