objective c-通过编程创建多个复选框

问题描述

通过编程创建多个复选框

UIViewController中有一个UITextView,要对UITextView插入多个复选框。

怎么创建多个复选框,并且对这些复选框动态的创建方法?

目前代码如下:

-(void)Check
{
    CGPoint origin = note.frame.origin;
    NSString* head = [note.text substringToIndex:note.selectedRange.location];
    CGSize initialSize = [head sizeWithFont:note.font constrainedToSize:note.contentSize];
    NSUInteger startOfLine = [head length];

    NSString* tail = [head substringFromIndex:startOfLine];
    CGSize lineSize = [tail sizeWithFont:note.font forWidth:note.contentSize.width lineBreakMode:UILineBreakModeWordWrap];
    CGPoint cursor = origin;
    cursor.x += lineSize.width+15;
    cursor.y += initialSize.height - lineSize.height-130;

checkbox = [[UIButton alloc] initWithFrame:CGRectMake(cursor.x,cursor.y,15,15)];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"unchk.png"]forState:UIControlStateNormal];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateSelected];
    [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateHighlighted];
    checkbox.adjustsImageWhenHighlighted=YES;
    [checkbox addTarget:self action:@selector(ChkUnChk) forControlEvents:UIControlEventTouchUpInside];
    [note addSubview:checkbox];
}

-(void)ChkUnChk
{
    if(checkUnCheck==NO)
    {
        [checkbox setBackgroundImage:[UIImage imageNamed:@"chk.png"]forState:UIControlStateNormal];
        checkUnCheck=YES;
    }
    else if(checkUnCheck==YES)
    {
        [checkbox setBackgroundImage:[UIImage imageNamed:@"unchk.png"]forState:UIControlStateNormal];
        checkUnCheck=NO;
    }
}

-(void)checkboxSelected:(id)sender
{
    checkBoxSelected = !checkBoxSelected;
    [checkbox setSelected:checkBoxSelected];
}

其中note --> UITextView,checkbox --> UIButton

解决方案

NSMutableArray

.h文件

NSMutableArray *selectedBtnarr;

.m文件

 - (void)viewDidLoad
   {
         selectedBtnarr=[NSMutableArray alloc]init];
   }

然后设置 UIButton的属性. 每个Button都有不同标签.

-(void)ChkUnChk:(id)sender
{

    UIButton *btn=(UIButton *)sender;
    NSString *Str=[NSString stringWithFormat:@"%d",btn.tag];
    BOOL flag=   [selectedBtnarr containsObject:Str];

    if (flag==YES)
    {
        [btn setBackgroundImage:[UIImage imageNamed:@"unchk.png"]    forState:UIControlStateNormal];
        [selectedBtnarr removeObject:Str];
    }
    else
    {
        [selectedBtnarr addObject:Str];
        [btn setBackgroundImage:[UIImage imageNamed:@"chk.png"] forState:UIControlStateNormal];
    }
}
时间: 2024-11-04 16:42:53

objective c-通过编程创建多个复选框的相关文章

使用DataGridViewCheckBoxColumn创建dataGridView的复选框 为什么不能复选item

问题描述 [size=24px][size=18px][size=16px]做一个FORM版的程序,使用DataGridViewCheckBoxColumnc1=newDataGridViewCheckBoxColumn();this.dataGridView1.Columns.Insert(0,c1);方式在DataGridView第一列中添加checkbox,但运行时该列只能选择一个复选框,也就是说,再选择这一列中另外一个checkbox时,原来选择的那个checkbox自动取消选择程序中并

Struts的动态复选框-用动态选择的元素轻松创建复选框

简介:Struts Recipes 的合著者 Danilo Gurovich 从 George Franciscus 停止的地方开始,介绍了 易于使用的创建动态选择复选框的 Struts 诀窍. 在用户界面设计中,复选框组不如它的同类 -- 多行选择框那样流行.它们基本上做的是同一件事 ,即选择映射到单一 name 属性的一组选项.当在组中使用时,复选框执行的功能实际与多行选择框一样 ,但是它们占据的屏幕空间更多.当希望用户在选择一个或多个选项之前能够看到所有选项的时候,这会 很有好处. 虽然在

Struts中用动态选择的元素创建复选框

创建|动态|复选框     在用户界面设计中,复选框组不如它的同类 -- 多行选择框那样流行.它们基本上做的是同一件事,即选择映射到单一 name 属性的一组选项.当在组中使用时,复选框执行的功能实际与多行选择框一样,但是它们占据的屏幕空间更多.当希望用户在选择一个或多个选项之前能够看到所有选项的时候,这会很有好处. 虽然在选项不多的时候,多行选择框通常提供更好的观感,但是当选择框必须动态呈现而且包含预选功能时,对企业应用程序来说复选框组会是更好的选择.幸运的是,使用 Struts 框架可以很容

C#编程中如何获取CheckedListBox中的若干个复选框

问题描述 C#编程中如何获取CheckedListBox中的若干个复选框 在c#中如何获取checklistbox中的某几个复选框被选中的文本内容,我想将这些内容写到字符串数组中.请各位不吝赐教.请把具体的代码写给我.谢谢了. 解决方案 List<string> l = new List<string>(); foreach (object i in checkedListBox1.CheckedItems) { l.Add(i.ToString()); } string[] ar

jsp 复选框使用方法_JSP编程

1,页面上 复制代码 代码如下: <td width="4%" height="26" align="center"> <input type="checkbox" name="checkbox" value=<%=user.getId()%> /> </td> 2.action 复制代码 代码如下: String[] checkbox = request.g

windows api编程-如何获取其他程序的单选按钮或复选框是否选中?

问题描述 如何获取其他程序的单选按钮或复选框是否选中? 有一个程序,我想知道单选框按钮是否被选中了 已经获得了句柄,我用下面的方法始终返回0,请教各位有什么办法呢? SendMessage(Hwnd, BM_GETCHECK, 0, 0) 解决方案 用SPY++对照看下你获得的句柄对不对,还是是别的窗体的句柄. 解决方案二: 检查句柄对不对,另外确认目标是标准的Windows控件(a button created with theBS_AUTOCHECKBOX,BS_AUTORADIOBUTTO

JSP单选按钮验证、下拉框验证、复选框验证实现代码_JSP编程

//验证性别(单选按钮验证) function checkXb(){ var temp = false; var xbObj1= document.getElementById("xb1"); var xbObj2= document.getElementById("xb2"); if(xbObj1.checked || xbObj2.checked){ temp = true; } return temp; } function checkform() { //验

COM+ Web 服务:通过复选框路由到 XML Web Services(3) (微软中国)

services|web|xml|复选框|微软 SOAP 与 DCOM 的局限性和区别 .NET Remoting 的目的之一是提供丰富的分布式环境,使开发人员能够在此环境中对序列化协议(格式化程序)和网络协议(频道)进行组合与匹配..NET 框架 1.0 版本中的 COM+ Web 服务仅支持一种格式化程序 (SOAP) 和一种频道 (HTTP).这并不是说其他频道和格式化程序不能使用 ServicedComponents 或 COM+,而是说没有自动配置为这些备用频道和格式化程序提供客户端和

COM+ Web 服务:通过复选框路由到 XML Web Services (转)10

services|web|xml|复选框 另一个可以自定义的区域包括客户端激活对象的生存期管理,如下例所示: <?xml version="1.0" encoding="utf-8"?><configuration> <system.runtime.remoting>  <application>   <service>    <wellknown mode="SingleCall"