创建一个可以在以后单击同一按钮时添加的可变数组?

2024-01-28

一般菜鸟问题:

(1) 如何创建一个NSMutable数组在一个buttonClicked我可以在随后单击同一按钮时添加更多条目的操作吗?我似乎总是在每次点击时都从一个新数组开始(该数组只打印 1 个条目,这是一个按钮中最新的按钮标签)NSLog陈述)。

我有大约 100 个按钮(一个对应于字符串中称为“列表”的每个字符),这些按钮是由代码中前面的 for 循环生成的,并且每个按钮都分配了一个标签。它们位于我视野范围内的滚动视图中ViewController.

我希望跟踪有多少(以及哪些)按钮被点击可以选择如果第二次单击这些条目,则将其删除.

这是我到目前为止所拥有的:

-(void) buttonClicked:(UIButton *)sender
      NSMutableArray * theseButtonsHaveBeenClicked = [[NSMutableArray alloc] initWithCapacity: list.length];
      NSNumber *sendNum = [NSNumber numberWithInt:sender.tag];
      [theseButtonsHaveBeenClicked addObject:sendNum at index:sender.tag];
      NSLog(@"%@",theseButtonsHaveBeenClicked);
}

(2) 我读过,我也许可以使用 plist 字典,但我不太明白如何在代码中实现这一点,因为我无法手动键入字典中的项目(因为我不知道哪些按钮用户将点击)。如果我以某种方式加载并替换 plist 文件中的字典,这会更容易吗?我该怎么做呢?

(3) 我也不知道应该如何内存管理它,因为我需要不断更新数组。autorelease?

感谢您的任何帮助,您可以提供!


好的,首先,您正在创建一个本地范围的数组,该数组在每次调用时都会重新初始化按钮点击:。该变量应该是类初始化周期的一部分。

您也会过得更好NSMutableDictionary而不是 NSMutableArray。使用字典,我们不必指定容量,我们可以使用按钮的标签作为字典键。

这就是您需要做的,这三个步骤始终一起进行:属性/合成/释放。一个值得记住的好人。

  //Add property declaration to .h file
  @property (nonatomic, retain) NSMutableDictionary * theseButtonsHaveBeenClicked;

  //Add the synthesize directive to the top of .m file
  @synthesize theseButtonsHaveBeenClicked;

  // Add release call to the dealloc method at the bottom of .m file
  - (void) dealloc {
    self.theseButtonsHaveBeenClicked = nil; // syntactically equiv to [theseButtonsHaveBeenClicked release] but also nulls the pointer
    [super dealloc];
  }

接下来,我们在初始化类实例时创建一个存储对象。将其添加到您的班级中init or viewDidLoad method.

 self.theseButtonsHaveBeenClicked = [[NSMutableDictionary alloc] dictionary]; // convenience method for creating a dictionary

还有你更新的按钮点击:方法应该看起来更像这样。

    -(void) buttonClicked:(UIButton *)sender {

         NSNumber *senderTagAsNum = [NSNumber numberWithInt:sender.tag];
         NSString *senderTagAsString = [[NSString alloc] initWithFormat:@"%@",senderTagAsNum];

         // this block adds to dict on first click, removes if already in dict
         if(![self.theseButtonsHaveBeenClicked objectForKey:senderTagAsString]) {
           [self.theseButtonsHaveBeenClicked setValue:senderTagAsNum forKey:senderTagAsString];
         } else {
           [self.theseButtonsHaveBeenClicked removeObjectForKey:senderTagAsString];                }
         [senderTagAsString release];
         NSLog(@"%@", self.theseButtonsHaveBeenClicked);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建一个可以在以后单击同一按钮时添加的可变数组? 的相关文章

  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • iPhone 崩溃日志?

    我已经配置了一部 iPhone 并让用户安装了该应用程序 它失败 是否有崩溃日志可以让我看到 iPhone 上失败的原因 Ian 如果您可以使用 xcode 将 iPhone 连接到计算机 则在管理器窗口中它会显示每个应用程序崩溃的崩溃日志
  • 是什么导致了这个 iPhone 崩溃日志?

    我有点卡住了 需要解决这个问题 因为我的一个应用程序出现了随机崩溃 而这些崩溃并不总是能够重现 这是崩溃日志之一 Incident Identifier 59865612 9F00 44EA 9474 2BF607AD662E CrashR
  • 如何确定iPhone铃声的当前级别?

    我正在使用 AVSystemController 将 iPhone 铃声静音 但我不知道如何确定铃声的当前级别 有任何想法吗 PS 是的 我知道使用 AVSystemController 可能会导致应用程序被 App Store 禁止 这不
  • UISplitViewController - 推送模态视图

    使用 UISplitViewController 时推送模态视图的最佳实践是什么 您会从 RootViewController DetailViewController 还是直接从应用程序委托推送 理想情况下 我想要实现的功能是在基于某些条
  • 如何在 iOS 中注册自定义文件类型

    我目前正在创建一个应用程序 我想让用户在其中备份他们的文件 plist m4a 我压缩文件并将扩展名更改为自定义扩展名 专门针对我的应用程序 例如 MyBackup 然后 用户可以通过电子邮件或 iTunes 文件共享进行导出 我已经阅读过
  • 将值添加到数组的最有效方法

    假设我有一个大小为N where N gt 0 是否有一种更有效的方法可以不需要 O N 1 步骤来添加到数组中 在代码中 本质上 我目前正在做的是 function prependArray value oldArray var newA
  • 玻璃效果 UIView

    我想知道如何在 UIView 上添加玻璃效果 我想像这样的效果 http pttrns com pickers detail 0dc9d9f6c6a7577613b3453768eee3b3在灰色半透明视图上 您 可以在这里看到 Thank
  • PresentModalViewController 不执行任何操作

    我有一个 UIViewController parent 调用presentModalViewController与另一个 UIViewController child on viewDidLoad If parent没有 UINaviga
  • Turbo C 阵列问题

    我只是想问一些关于我的代码的事情 define LIM 40 main int day 0 float temp LIM clrscr do printf Enter temperature for day d day scanf f te
  • 避免“在此块中强烈捕获自身可能会导致保留周期”消息

    每次我必须在块内使用全局变量或属性时 如下所示 self save if isItSaving NO self saveMyFile 我必须像这样重写 BOOL iis isItSaving id myself self self save
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • 使用 json_encode() 函数在 PHP 数组中生成 JSON 键值对

    我正在尝试以特定语法获取 JSON 输出 这是我的代码 ss array 1 jpg 2 jpg dates array eu gt 59 99 us gt 39 99 array1 array name gt game1 publishe
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • 如何将 UDF 中的结构或类数组返回到数据帧列值中?

    d ID 1 pID 1000 startTime 2018 07 02T03 34 20 endTime 2018 07 03T02 40 20 ID 1 pID 1000 startTime 2018 07 02T03 45 20 en
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 将 iPhone 上的 stderr 写入文件和控制台

    我正在遵循答案中的建议here https stackoverflow com questions 5179108 iphone how to read application logs from device用于将 iOS 设备上的 NS
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord

随机推荐

  • Swift 的 UITableView 示例

    我使用 Swift 和 iOS 已有好几个月了 我熟悉许多做事的方法 但我还不够好 我不能不看就直接写下来 我过去很欣赏 Stack Overflow 提供的快速答案 让我回到对我已经生疏的主题的正轨 例如 AsyncTask Androi
  • 如何开始将 django-cms 集成到现有项目中

    我的目的是将现有项目中的静态页面 关于我们 联系我们等 转换为管理可编辑页面 我已按照以下说明进行操作tutorial http django cms readthedocs org en 3 0 12 how to integrate h
  • W1024 组合有符号和无符号类型 - 扩大两个操作数

    我怎样才能防止这个警告 DCC 警告 uFvSystem pas 293 W1024 组合有符号和无符号类型 扩大了两个操作数 function LinkerTimestamp TDateTime overload begin Result
  • 为什么我不应该#include

    我用我的代码发布了一个问题 其唯一的 include指令如下 include
  • Chrome Devtools 以搜索方式打开,而不是开发工具本身

    尝试运行 Nativescript 调试会话 每次我进入 chrome devtools devtools bundled inspector html experiments true ws localhost 41000 它会打开谷歌搜
  • 全卷积网络的每像素 softmax

    我正在尝试实现类似全卷积网络的东西 其中最后一个卷积层使用大小为 1x1 的滤波器并输出 分数 张量 分数张量的形状为 Batch height width num classes 我的问题是 张量流中的什么函数可以对每个像素应用 soft
  • UITextView 绘制不可见/空白字符

    我将如何做一个UITextView为制表符 空格和换行符结尾绘制不可见字符 我认为必须在drawRect CGRect 方法或通过 Text Kit 中的布局管理器 有什么简单和 或直观的解决方案吗 我只需要知道如何获得CGRect每个空白
  • 如何在 Windows 8 Metro 应用程序中的设备中存储缩略图图像#

    我正在使用此代码创建缩略图并在框架中显示 平台 gt 使用 C 的 Windows 8 Metro 应用程序 http code msdn microsoft com windowsapps File and folder thumbnai
  • 使用 TextArea 通过 JavaFX 编辑大型文本文件

    有没有一种方法可以在 TextArea 中相当快地编辑相对较大的文本文件 例如 10 25 MB 或者也许可以禁用某些功能以使其更快 有替代组件吗 我了解 RichTextFX 但我想它会更慢 因为它做得更多 而且我只需要一个基本的编辑器
  • 单击按钮时关闭 jQuery 厚盒

    这是我的 jQuery script gt Html
  • 不同饼图中每个标签保持相同的颜色

    我无法为从一个饼图到另一个饼图的每个标签保持相同的颜色 如下图所示 Matplotlib 反转了第二个饼图中的颜色 我希望 Frogs 标签保持红色 Hogs 标签保持绿色 我也尝试添加label参数 但它只是给出了错误的计数 我还尝试反转
  • PHP $_FILES 文件循环上传

    我想从 php 函数将文件插入到 mysql 中 需要上传的文件已经存在于服务器上 所以我不想使用上传表单 我想循环遍历目录并将文件信息放入 FILES 请让我知道如何获得 file into FILES然后调用上传 dir handle
  • 在多个线程上并行调用 ICsharpCode.SharpZipLib 是否安全

    我们当前使用 ICsharpCode SharpZipLib 库的 GZipOutputStream 类进行压缩 我们通过一个线程来完成它 我想将输入数据流分割成块并并行压缩它们 我担心这个库内部可能有一些静态数据 这些静态数据会被多个线程
  • 使用 Python 的 Headless Chrome 在尝试下载文件时暂停

    我在 Mac 上使用 Python Jupyter Selenium webdriver 和 headless Chrome 带有 Canary 我写了一个脚本来抓取一个非常旧的网站 为了从该网站下载文件 我需要单击几个按钮 最终引导我到一
  • 使用 Python 的具有多个帐户的 YouTube 数据 API

    我正在开发一个应用程序 旨在帮助我的一个朋友更好地组织他的 YouTube 频道 他在不同的 Google 帐户上拥有多个频道 我正在用 Python 开发这个程序 目前我对 YouTube Data API 没有太多经验 我计划使用它 因
  • 如何确定哪些 Eclipse 插件对菜单和工具栏有贡献并停止它们

    我正在创建一个 RCP 应用程序 它使用许多第三方插件 其中一些插件提供了我不希望显示的菜单 菜单项和工具栏按钮 如何确定哪些插件正在提供这些菜单 菜单项和工具栏按钮 以及如何禁用它们这样做 检查菜单 工具栏贡献等的详细信息 通过包含插件来
  • decltype(auto) 与 auto&& 执行函数返回类型的通用处理

    使用时auto 处理返回左值的函数 int func int v 42 return v auto v func 治疗会有什么后果v作为参考而不是左值 这些后果是否证明使用decltype auto 代替auto 对函数的返回类型执行通用处
  • 手动向 Spring Security 提供引用 URL

    我们有一些购物车页面适用于访客和用户路径 我们希望允许用户在此过程中随时登录 但实际上并不想创建另一个登录页面 我希望我们可以简单地将用户重定向到现有登录并告诉 Spring Security 返回哪个 URL 我知道当会话超时和 或在没有
  • 为什么容器大小取决于绝对定位的子项?

    我正在尝试构建一个带有两个视频盒的类似 Skype 的界面 http jsfiddle net q9ER2 20 http jsfiddle net q9ER2 20
  • 创建一个可以在以后单击同一按钮时添加的可变数组?

    一般菜鸟问题 1 如何创建一个NSMutable数组在一个buttonClicked我可以在随后单击同一按钮时添加更多条目的操作吗 我似乎总是在每次点击时都从一个新数组开始 该数组只打印 1 个条目 这是一个按钮中最新的按钮标签 NSLog