iOS自定义警告框 OC 如何写可变参数的函数

【IOS 开发学习总结-OC-47】★ios开发之UI控件——UIAlertView与 UIActionSheet 【IOS 开发学习总结-OC-47】★ios开发之UI控件——UIAlertView与 UIActionSheetUIAlertView与 UIActionSheet都是弹出式对话框,它们显示出来的时候,不能与其他控件发生交。它们的区别在于:前者的弹出位置在屏幕中央,而后者显示在屏幕底部弹出。这2个控件都只能用代码添加,无法在界面设计文件中添加。UIAlertView——警告框UIAlertView 阅读详情

自定义警报框下载地址

先看看OC中的一些用法,一般是在初始化数组的时候, 也可以像下面deotherButtonTitles一样 ,输入一组字符串,以nil结尾,然后输入的字符串就会变成数组了,

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:<#(NSString *)#> 
message:<#(NSString *)#> delegate:<#(id)#> cancelButtonTitle:<#(NSString *)#> 
otherButtonTitles:<#(NSString *), ...#>, nil];
(instancetype)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id /*<UIAlertViewDelegate>*/)delegate 
cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION 
NS_EXTENSION_UNAVAILABLE_IOS("Use UIAlertController instead.”);

NS_REQUIRES_NIL_TERMINATION :多参数时,末尾带上这个 会以nil结尾。

实现方法,
用到了不定参数
大家先看几宏.
在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:

define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )

//整个做的事情就是将n的长度化为int长度的整数倍。
//比如n为5,二进制就是101b,int长度为4,二进制为100b,那么n化为int长度的整数倍就应该为8。
//~(sizeof(int) - 1) )就应该为~(4-1)=~(00000011b)=11111100b,这样任何数& ~(sizeof(int) - 1) )后最后两位肯定为0,就肯定是4的整数倍了。
//(sizeof(n) + sizeof(int) - 1)就是将大于4m但小于等于4(m+1)的数提高到大于等于4(m+1)但小于4(m+2),这样再& ~(sizeof(int) - 1) )后就正好将原长度补齐到4的倍数了。

1.#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) //第一个可选参数地址
2.#define va_arg(ap,t) ( (t )((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) //下一个参数地址
3.#define va_end(ap) ( ap = (va_list)0 ) // 将指针置为无效

C语言

void arg_test(int i,...)
{
    int j = 0;
    va_list arg_pp;//定义一个va_list型的变量,这个变量是指向参数的指针

    va_start(arg_pp, i);//得到第一个可变参数的地址,第二个参数是第一个可变参数的前一个参数,是一个固定参数(可以说"..."才是可变参数,int i 只是一个固定的参数,并不是说(int i,...)都是可变参数)
//    arg_pp指向第一个可变参数在堆栈的地址
    printf("1--&i = %p\n",&i);
    printf("2--arg_pp = %p\n",arg_pp);

    j=*((int *)arg_pp);//
    printf("3--%d %d\n", i, j);
    j=va_arg(arg_pp, int);//返回可变的参数,va_arg的第二个参数是你要返回的参数的类型
//    先获取sizeof(int)的类型,让arg_pp指向下一个参数的地址,然后返回arg_pp的指针类型,正式第一个可变参数在堆栈里的地址,然后用*取得这个地址的内容
     printf("4--arg_pp = %p\n", arg_pp);
//
    j=*((int *)arg_pp);
    printf("5--%d %d\n", i, j);
    j=va_arg(arg_pp, int);
    printf("@--arg_pp = %p\n", arg_pp);
    printf("6--%d %d\n", i, j);
    j=va_arg(arg_pp, int);

    printf("@--arg_pp = %p\n", arg_pp);
    va_end(arg_pp);//用va_end结束可变参数的获取,
    printf("6--%d %d\n", i, j);
}

OC

-(NSMutableArray*)test1:(NSString*)firstStr,...NS_REQUIRES_NIL_TERMINATION
{
    NSMutableArray *tempArr = [[NSMutableArray alloc]initWithCapacity:0];
    va_list va_list;
    va_start(va_list, firstStr);
    [tempArr  addObject:firstStr];//添加第一个参数
    id temp;
    //while循环 当取到nil的时候就停止了
    while ((temp = va_arg(va_list, id))) {
        [tempArr addObject:temp];
    }

    return tempArr;
}
【IOS 开发学习总结-OC-48】★★ios开发之UI控件——UIDatePicker与 UIPickerView 【IOS 开发学习总结-OC-48】★★ios开发之UI控件——UIDatePicker与 UIPickerViewUIDatePicker控件——日期选择器用来选择日期与时间,也可以作为倒计时控件。UIDatePicker继承了 UIControl——可作为活动控件使用,与用户进行交互,既可以在 interface builder,也可以在代码中绑定事件处理方法。 属性面板简要说明: 1. m 阅读详情

相关推荐

[TI板]MSPM0G3507——keil环境配置+烧录配置+vscode配置+空工程迁移+点灯+芯片解锁教程

本文介绍了MSPM0G3507开发环境的配置与烧录方法。主要内容包括:1)下载安装芯片支持包和SDK开发工具;2)通过串口或DAPLink两种方式实现程序烧录,详细说明了UniFlash软件的使用步骤和常见问题解决方法;3)简要提及工程迁移和LED点灯等基础操作。文章提供了完整的开发环境搭建指南,涵盖从软件安装到实际烧录的全过程,并附有相关工具下载链接和操作截图,帮助开发者快速上手MSPM0G3507开发。

qq_23220445的博客 1万+

OC弹窗Alert

OC弹窗 都在viewController中实现 - (void)viewDidLoad { [super viewDidLoad]; //以前的UIAlertView可以随时调用,不用担心在哪个控制器调用,iOS10出现以后,基本上不再对7进行适配了,所以UIAlertView也逐渐UIAlertViewController取代了,而UIAlertViewController的使用需要拿到当前视图,并在当前视图模态弹出UIAlertViewController。所以要实现一句话调用alert的关键

weixin_45363671的博客 1572

C#上位机实战:借助NetToPLCSim与西门子S7-1200仿真通信全攻略

本文详细介绍了如何使用C#开发上位机程序,通过NetToPLCSim与西门子S7-1200进行仿真通信的全过程。从环境准备、PLC仿真环境搭建、网络配置到C#代码实现,提供了完整的实战指南和常见问题解决方案,帮助开发者快速掌握工业自动化通信技术。

weixin_30596343的博客 440

Objective-C的消息传递机制

http://www.keakon.net/2011/08/10/Objective-C%E7%9A%84%E6%B6%88%E6%81%AF%E4%BC%A0%E9%80%92%E6%9C%BA%E5%88%B6 各种语言都有些传递函数的方法:C语言中可以使用函数指针,C++中有函数引用、仿函数和lambda,Objective-C里也有选择器(selector)和block。

qhexin的专栏 715

51单片机———UART串口通信

传统理解就是信息的传输与交换。单片机与单片机之间,单片机与电脑之间,以及单片机与各式各样的模块之间都可以进行通信。如果没有通信,那么单片机的功能仅仅局限于它本身,它没办法从其他设备获取有用信息,也无法将自己产生的信息告诉其他设备,这样子单片机与外围器件的合作就会收到限制,没办法完成更多的功能,就像一个没办法拓展业务的公司。:实现我们程序当中写的P0=0xFC,就是一次同时对8位进行信号的输出;习惯上,我们还称P0、P1、P2、P3为单片机的4组并行总线:实现低位先发 高位在后。

m0_74225397的博客 3295

分享通达信破解交易接口的使用!

那其实通达信破解交易接口的使用方法比较复杂,这里以MA均线指标为例子,只要理解了这些操作步骤,就可以很容易地使用其他指标包括自己编写的指标来进行交易。委托结果(包含委托编号), 需要分配 1024*1024 字节的空间。委托结果数组, 每项结果需要分配 1024*1024 字节的空间。0: 买入, 1: 卖出, 2: 融资买入, 3: 融券卖出,4: (市价委托)上海五档即成剩撤, 深圳五档即成剩撤。4: 买券还券, 5: 卖券还款, 6: 现券还券。0: 上海限价委托, 深圳限价委托。

1841085904的博客 2359

iOS自定义警告框(OC)

本文参考Demo:http://code4app.com/ios/JKAlertDialog/55019c35933bf078768b4748 如果在导航中使用自定义警告框,如果警告框添加在view上的话则导航栏不会被挡住,只有添加在window上才能挡住导航栏 这里主要对如何自定义警告框进行一个介绍 首先在CustomAlertView.h中写 #import @interface

u011460961的博客 1963

车载机器人终极解决方案:从功能叠加到生态融合的颠覆性变革

本文提出一种融合智能汽车与家居技术的车载机器人架构。其创新点包括:1)基于多模态传感器的拟人化硬件设计,实现声源定位误差<5°、体温检测精度±0.3℃;2)跨模态情感计算引擎,综合面部表情、心率等数据构建三维情绪模型;3)协议自适应中间件,支持小米、华为等多品牌智能家居设备即插即用;4)环境自适应舵机控制,-30℃环境下扭矩保持率达92.5%。测试数据显示,该方案使交互步骤减少60%,用户满意度提升58%,日均使用时长增加2.3倍,为"人-车-家"生态融合提供了可行技术路径。

qq_42671193的博客 1125

XZ_iOS 之UIAlertController 修改title、message和action颜色、大小

效果图如下: 之前看了很多的博客,都是先获取 Ivar属性,然后判断是title还是message再进行修改,其实不用,可以直接拿到title和message进行修改,代码如下: /** 简单的文字弹窗,带’确定‘文字 @param title 题目 @param message 内容 @param target 目标控制器 */ + (void)showAlertWithT...

understand_XZ的博客 1062

人工智能在软件测试中的广泛应用领域

人工智能在软件测试中的应用领域涵盖了自动化测试、缺陷预测和缺陷检测、智能化测试报告生成等方面。以上提供的示例代码只是其中的一小部分,实际上,人工智能在软件测试中还有许多其他的应用。通过结合人工智能和软件测试,可以提高测试效率和质量,减少测试工作的人力成本,并帮助开发人员更好地理解和改进软件产品。人工智能(Artificial Intelligence,简称AI)在软件测试领域的应用越来越广泛。下面将介绍几个人工智能在软件测试中的主要应用领域,并提供一些相关的源代码示例。

FycPerformance的博客 462

YOLOv5 自定义模型 Android 部署完整指南

本文详细介绍了将YOLOv5模型部署到Android设备的完整流程,包含三个核心部分:首先验证官方模型测试,确保基础环境配置正确;随后进行模型转换,从PyTorch导出ONNX格式并优化,再转换为NCNN格式;最后在Android项目中集成自定义模型,包括文件替换、参数修改和代码适配。教程基于YOLOv5 6.1版本,使用NCNN框架进行移动端推理,涵盖了常见问题解决方案和关键配置要点,为开发者提供了从训练到部署的完整技术路线。

FJN110的博客 592

ios开发Objective-C可变参数函数

首先作为一个coder 很多时候会遇到自己不能解决的问题需要上网查资料,因为没有学过多少c语言,所以这方面只能请求网上的前辈,然后就看了关于 “Objective-C可变参数函数”的文章,可惜网上只有转载,其实就是1篇文章而已。   而且不知道我自己水平没能理解 还是演示demo就有问题,或者大家都没发现的一个问题。这里重新按照自己的理解重新写一个使用oc可变参数函数的方法。本人能力有限

think12的专栏 1万+

FPGA实践教程: 使用HLS将C程序生成IP核心进行FPGA开发

请根据您使用的FPGA开发板和供应商选择适当的HLS工具,并按照他们的安装指南进行安装。根据您使用的FPGA开发板和供应商选择适当的HLS工具,并按照他们的安装指南进行安装。通过本教程,您了解了如何使用HLS工具将C程序生成IP核心,并将其用于FPGA开发。在HLS项目中,您可以对C程序进行设计和优化,以生成对应的IP核心。在HLS项目中,您可以对C程序进行设计和优化,以生成相应的IP核心。将导出的IP核心导入到FPGA项目中。使用FPGA开发环境的菜单中的"导入"或"添加文件"选项导入IP核心。

CqpFsharp的博客 455

IOS 警告框 (UIAlertView)的使用方法

原文地址::https://www.cnblogs.com/haibosoft/p/3674888.html 相关文章 1、IOS开发:UIAlertView使用----https://www.cnblogs.com/razioooooo/p/3224133.html 2、UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法----https://b...

xqhrs232的专栏 2786

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OC学习笔记之011IOS应用开发入门--控件2进度条、拖动条、警告框、日期选择器、选择器

1.进度条-UIProgressView #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIProgressView *progress1; @property (weak, nonatomic) IBOutlet UIProgressView *progress3; @property (weak, nonatomic) IBOutlet UIProgressVie

weixin_43745804的博客 861

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iOS oc与js交互详解 之 WKWebView

Xcode8发布以后,编译器开始不支持iOS7,所以很多应用在适配iOS10之后都不在适配iOS7了,其中包括了很多大公司,网易新闻,滴滴出行等。 支持到iOS8,第一个要改的自然是用WKWebView替换原来的UIWebView。WKWebView有很多明显优势: 1、更多的支持HTML5的特性 2、官方宣称的高达60fps的滚动刷新率以及内置手势 3、...

1960

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

js页面加载完成调用oc_iOS开发--JS调用原生OC篇

JS调用原生OC篇方式一(反正我不用)第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理。我写了一个简单的HTML网页和一个btn点击事件用来与原生OC交互,HTML代码如下:function showAlert(message){alert(message);}function loadURL(url) {var iFrame;iFra...

weixin_33435783的博客 273

iOS OC与JS的交互(WKWebview-MessageHandler实现)

在开发过程中,iOS 中实现加载 web 页面主要有两种控件,UIWebView 和 WKWebview,两种控件对应具体的实现方法不同。WKWebView是苹果公司在iOS8系统推出的,这里我们主要概述WebKit中更新的WKWebView控件的新特性与使用方法。 一、 WKWebView的代理方法 1.WKNavigationDelegate 该代理提供的方法,可以用来追踪加载过...

H.A.N的博客 4488

iOS WKWebView OC 与 JS 交互学习

我写WKWebView 想让 服务端相应 一个 方法但是不响应,根据 UIWebView 用 JSContext就能拿到响应的处理经验是不是服务端 也需要 对 WKwebView有兼容的一个写法??? 特此学习 WKWebView 记录 一 .WKWebView 代理协议 (1)WKScriptMessageHandler : OC在JS调用方法时做的处理。如果需要调用对话窗口就会先执行(3...

weixin_33908217的博客 514

IOS中UIAlertView(警告框)常用方法总结

IOS中UIAlertView(警告框)常用方法总结 一、初始化方法 - (instancetype)initWithTitle:(NSString *)title message:(NSString*)message delegate:(id /**/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle

qq_27740983的博客 1076

iOS开发之自己封装的提示框(警告框)样式BHAlertView

最近需要使用到提示框(警告框)进行信息的展示和提醒,所以进行了一个类的封装,想用Swift调用此OC文件,但是发现有些困难,所以暂时先把OC代码进行展示,随后再好好研究一下在Swift中的使用。对于封装文件,首先要设计界面,其次是数据之间的传递过程初始化样式方法:- (instancetype)initWithTitle:(NSString *)title icon:(UIImage *)icon

hbblzjy的博客 2008

iOS开发-学习规划及阶段性目标,学习方法整理

iOS完整学习路线可参考这个图,iOS完整学习路线(参考大神的) 目前阶段对OC的语法基础稍有了解,接下来一段时间主要目标是OC语法基础和UI控件的学习使用,UIView 常用的一些UIButton,UILable,UIImageView,UITextFiled, UIScrollVIew,UIAlertiew,等 学习的方式: 看书+ 跟着敲源码,读OC代码,学习知识点并总结归纳成笔记,经常复习关键知识点. 学习的时候可以经常和Java语法类比学习,其实有很多地方都是相似的,对于比较晦涩的一部分比如内存管

qq_48946910的博客 959

js页面加载完成调用oc_js调用原生OC方法

上代码。#import "ViewController.h"#import #define RandomColor [UIColor colorWithRed:arc4random_uniform(255)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1.0f];@i...

weixin_42400669的博客 234

如何在ios工程中用oc调用js算法

假如现在有一套js的加密算法sm2,包含很多个js文件,需要在ios工程里面调用,适当的地方对数据加密,当然不能把uiwebview显示出来去点击上面的按钮。 前提:有一个html文件,这个html里面引用的所有的js文件,这个html上面已经写好了调用js的方法,步骤,按钮 第一步:新建一个ios工程,把html和js文件导入,写一个webView加载这个html

qq_15509071的博客 1247

iOS_UIAlertController的使用方法

原文地址:https://blog.youkuaiyun.com/w582324909/article/details/79012825iOS 8新增加了UIAlertController控制器,用之前的UIAlertview和actionSheet会报警告,这个控制器可以实现警告框和操作表,非常的方便。使用UIAlertController的优势在于不仅可以添加按钮,还可以添加文本框和自定义视图到警告框和操...

Crazy Android 928

OC与Swift写AlertController

在iOS8以后,alertView和actionSheet,被 alertController所替代.今天用OC和swift,分别写了alertController.给大家做个参考.共勉. OC: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the ...

weixin_30901729的博客 179
下一篇: iOS中GCD线程开发入门
淡暗云之遥
博客等级 码龄15年 61粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值