IOS委托,实现两个UIView相互传值

本文详细介绍了iOS开发中委托(Delegate)的概念及其在实际项目中的应用,通过实例展示了如何使用委托进行值传递和状态通知,从父视图控制器向子视图控制器传值,以及如何在返回时通过委托改变父视图的label值。

detegate委托在IOS中是一种随处可见的模式,通俗的说,就是我把想做的某件事委托给其他人去做,就好像Java中的接口一样,我只用定义方法的实现,不用过问实现的过程。

Demo下载:http://pan.baidu.com/share/link?shareid=131942&uk=101519637

创建一个委托并声明一个方法

#import <Foundation/Foundation.h>
@protocol TestDetegate <NSObject>
- (void)setValue:(NSString *)string;
@end
在委托中,并没有实现setValue这个方法的内容,而在下面的AView.m中实现这个方法
// 实现TestDetegate的setValue方法
- (void)setValue:(NSString *)string
{
    aTextLabel.text = string;
}

- (IBAction)clickPush:(id)sender
{
    BView *bview = [[BView alloc] initWithNibName:@"BView" bundle:nil];
    bview.text = @"AView";
    // 设置委托
    bview.detegate = self;
    [self.navigationController pushViewController:bview animated:YES];
}
在BView.h中
#import <UIKit/UIKit.h>
#import "TestDetegate.h"

@interface BView : UIViewController
@property (nonatomic, retain) IBOutlet UILabel *bTextLabel;
@property (nonatomic, assign) id <TestDetegate> detegate;
@property (nonatomic, retain) NSString *text;
- (IBAction)clickBack:(id)sender;

@end

当点击Push这个Button的时候,设置BView的Label为AView,完成了由父窗口向子窗口传值

当点击Back后返回AView时,通过委托改变AView的label值,实现了子窗口到父窗口的传值


转载于:https://my.oschina.net/wbei/blog/89325

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值