【问题标题】:How to create multiple buttons dynamically and handle their separate events? + iPhone SDK如何动态创建多个按钮并处理它们各自的事件? + iPhone SDK
【发布时间】:2009-03-20 16:16:33
【问题描述】:

现在我正在创建一个 iPhone 应用程序。我需要动态创建多个按钮并分别处理它们对应的事件。每个按钮事件是否可以单独运行,或者我可以将变量或对象发送到方法并根据该值区分按钮行为。有人能指点我怎么做吗?

请帮忙,

赛姆

【问题讨论】:

    标签: iphone objective-c uikit


    【解决方案1】:

    您应该查看 iPhone SDK 中的 UI Catalog 示例。它包含以编程方式创建所有 UI 元素的示例。

    我不相信您可以将参数传递给触发按钮时调用的函数,因此您需要为每个按钮设置一个单独的函数。然而,这些可能是轻量级函数,可以使用参数调用另一个函数。

    要手动创建按钮并设置其操作,您可以执行以下操作:

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(80.0, 170, 150.0, 30.0);
    [button setTitle:@"My Button" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
    

    【讨论】:

      【解决方案2】:

      当一个按钮调用 IBAction(这将是您传入的选择器)时,它还会传递一个指针,指向您通常拥有的 :(id)sender 参数中的按钮:

      - (IBAction) doSoemthing:(id)sender
      

      所以你可以根据传入的按钮找出你想要做什么。通过基于所有按钮地址创建地图,或者通过让您使用的所有 UIButtons 成为 UIButton 的子类,您可以在其中插入某种自定义 ID 并在 doSomething: 被点击时查找它。

      【讨论】:

        【解决方案3】:

        您可以通过编程方式使用 UIButton 的 tag 属性并访问该标记。这比子类化更容易。

        这是一个例子: Detecting which UIButton was pressed in a UITableView

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-22
          • 2017-07-29
          • 1970-01-01
          • 2015-03-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多