0

我需要将一个参数传递给 IBAction(但在我的情况下它只有 sender(id) - UIButton),所以我想知道是否可以将某个对象的描述转换为一个对象。现在我将参数作为按钮的 [titleLabel 文本] 传递:

    [[button titleLabel]setText:[someObject description]];

在 IBAction 我得到描述:

  - (IBAction)AddToCalendarEvent:(id)sender {
         NSString * description = [[sender titleLabel]text];
         NSLog(@"description is %@", desc);
  }

现在我想将此描述转换为一个对象。可能吗?

UPD 我正在用单元格动态填充表格视图。每个单元格都有四个按钮,我希望这些按钮保留一些对象作为参数传递给 IBAction。 每个按钮都必须存储日期

4

2 回答 2

0

根据我已阅读并当前对您的问题的理解,我认为对您来说最好的解决方案是在您的视图控制器上维护一个按钮数组(或其他一些适当的数据结构)。然后,在每个按钮被点击时调用的操作方法中,您可以在按钮数组中搜索操作方法的发送者。然后,一旦您确定点击了哪个按钮,您就可以使用它在数据模型中查找您要查找的任何数据。您应该将此解决方案应用于您的情况,它可能最终看起来有点不同,但基本想法是合理的。您应该避免在视图中维护状态(在这种情况下是您的按钮),并且看起来您正在从对问题的描述中接近状态。

于 2012-04-09T12:46:36.067 回答
-1

您绝对不会以这种方式转换。

一个简单的选项是将tag每个 UIButton 的 设置为唯一的整数,并存储您需要查找的对象数组:

- (IBAction)AddToCalendarEvent:(id)sender {
    NSInteger senderTag = [sender tag];
    NSLog(@"Sender index = %d", senderTag);
    // Use this tag as an index to the array.
}

更复杂的方法是继承 UIButton(通常不推荐),以存储与每个 UIButton 关联的数据。然后您可以再次从sender.

于 2012-04-09T03:17:14.947 回答