iphone - 在分段控件中获取按钮ID

时间:2010-03-24 13:34:09

标签: iphone iphone-sdk-3.0

我正在尝试创建一些使用UIPopOverController概念的东西,我的意思是,让那个语音气泡锚点指向触发该方法的按钮。

问题是我正在使用UISegmentedControl ......

如何获取在UISegmentedControl上点击的按钮的ID,以便我可以确定其位置并生成锚点?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

查看UICatalog示例项目中的SegmentViewController.{h,m}

示例代码使用代码设置视图。

这一行

[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];

是魔术发生的地方。

- (void)segmentAction:(id)sender
{
    //NSLog(@"segmentAction: selected segment = %d", [sender selectedSegmentIndex]);
}

您也可以在Interface Builder

中执行此操作

假设您在ViewController中声明了(IBAction)segmentAction:(id)sender并且文件所有者是您的ViewController,右键单击UISegmentedControl并在UIControlEventValueChanged事件与文件所有者{{1}之间建立连接}}

UISegmentedControl就像一个“单个”按钮。它是放置在单个帧中的单个对象,与工具栏项不同,后者是放置在其自己的帧中的对象数组。典型的使用模式是在segmentAction方法的switch语句中分派消息。

我看到两个选项。

选项A:实现包含UIButton控件数组的自定义视图。所有按钮的UITouchUpInside事件的操作可以指向控制器中的相同方法。然后实现一个buttonPressed:(id)发件人,您可以向发件人询问其框架和位置,以便在顶部创建新视图。 - >复杂

选项B:您可以使用从segmentActionselectedSegmentedIndexwidthForSegmentAtIndex:计算的偏移量来计算新子视图的位置。与从任何视图的边界计算确实没什么不同。 - >更容易