iOS菜鸟开发记录(03)

iOS数据传递技巧
本文介绍了iOS开发中常见的四种数据传递方法:属性传递、代理传递、代码块传递和通知传递,并提供了详细的代码示例。

大家好,今天又去复习了一下几个传值的方式,属性传值,代理传值,代码块传值,通知传值.目前常用的四种传值方式

首先是属性传值方式: 属性传值方式使用起来非常简单方便,我们只需要在push到下一个类的时候去给一下个类的属性

代码示例:

- (void)pushToNextView

{

    SecondViewController *nextViewController = [[SecondViewControlleralloc] init];

    nextViewController.transformString =@"我传值了哦!";

    [self.navigationControllerpushViewController:nextViewControlleranimated:YES];

}

这里是传入下一个页面的数值的方法,这里需要提前在第二页的ViewController的.h中定义好属性,就可以接收到属性了,但是属性传值只能向下传值.没有办法想上页面传值;

第二:代理传值,代理传值是非常方便的属性传值,可以无视界面就可以将想传出去的内容传递出去,代理传值非常适合穿出单一模式的内容

代码示例:我们要先定义代理

@class ViewController;

@protocol ViewControllerDelegate <NSObject>


- (void)transform:(NSString *)transform;


@end

然后我们要声明属性,为修饰为weak

@property (nonatomic,weak)id<ViewControllerDelegate> delegate;


如果我们想要向外传出一些内容,我们可以建立对应的方法或者点击方法


- (void)pushToNextView

{

    if ([self.delegaterespondsToSelector:@selector(transform:)]) {

        [self.delegatetransform:@"我是代理传值"];

    }

}

然后我们在对应的页面去遵守代理,然后写入代理方法就可以获取传来的数值


第三:block传值,传值方式类似属性传值,但是要比属性传值灵活很多,但是没有代理传值的范围广泛,接下来来看一下简单的代码示例

代码示例:首先我们需要在需要传出数值的地方定义代码块

@property (nonatomic,strong)void (^newBlock)(NSString *,NSInteger);

定义好代码块之后我们需要在对应的按钮方法,或者调用的类方法

- (void)pushToNextView

{

    self.newBlock(@"我是代码块传值!",123);

    [self.navigationControllerpopViewControllerAnimated:YES];

}


这里可以将我们需要的数值传出去,当然我们接收代码块的地方也必须是在调用的地方使用代码块

- (void)pushToSecondView

{

    

    SecondViewController * secondVC = [[SecondViewControlleralloc]init];

    //Block定义

    //^(参数类型昵称)执行代码

    secondVC.newBlock = ^(NSString *str,NSInteger age){

        self.name = str;

        self.age = age;

        

    };

    

    [selfpresentViewController:secondVC animated:YEScompletion:nil];

    

}

这样我们就可以获取到代码块中的数据了

四:通知传值:通知传值有两个对应的方法一个是[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(receiveData:)name:@"receive"object:nil];可以添加监听对象

    

    另一个是[[NSNotificationCenterdefaultCenter] postNotificationName:@"receive"object:jumpBtn];可以发送被监听对象的属性内容

当我们接收到监听内容对象变动的时候就会调用我们在添加监听类中定义好的方法

- (void)receiveData:(NSNotification *)noti

{

    self.btn = noti.object;

}

就可以获取到被监听对象的属性了


  以上就是目前常用的四个传值类型的简单实用,希望大家看到有错误的地方请多指正,谢谢!





Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值