我正在创建一个定义为here的iOS应用!所以在这个应用程序中,我使用分段控件(动态添加),以便用户选择其中一个选项。当用户选择一个选项时,我想将一个字符串发送到selector方法,所以我想知道我们是否可以将除id和event之外的任何内容发送到一个动作:@selector我们添加。
这是代码
NSArray *optionsArray =[NSArray arrayWithArray:qna2.answers];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:optionsArray];
segmentedControl.frame = CGRectMake(xOffset,yOffset, 250, 50);
[segmentedControl setSelectedSegmentIndex:UISegmentedControlNoSegment];
[self.view addSubview:segmentedControl];
yOffset+=100;
[segmentedControl addTarget:self action:@selector(MyAction:) forControlEvents: UIControlEventValueChanged];
那么我们可以像@selector(Myaction:Category)那样做吗?
答案 0 :(得分:0)
您最好的选择可能是将字符串存储在如下属性中:
@property (nonatomic, copy) NSString *myString;
然后,检索myAction:
方法中的值。
或者你可以继承你的控件并添加一个属性:
@interface MySegmentedControl : UISegmentedControl
@property (nonatomic, copy) NSString *stringProperty;
@end
设置每个分段控件时:
MySegmentedControl *segmentedControl = [[MySegmentedControl alloc] initWith...];
segmentedControl.stringProperty = @"Some meaningful value";
[segmentedControl addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventValueChanged];
在更改处理程序中:
- (void) myAction:(MySegmentedControl *)sender
{
NSString *importantString = sender.stringProperty;
// do stuff with importantString
}
答案 1 :(得分:0)
我的方法是继承UISegmentedControl
,比如MYUISegementedControl
,并创建一个委托协议,以便它可以回拨给您UIViewController
。
创建MYUISegmentedControl
实例时,您可以添加所需的任何其他属性,并将此信息传递回代理,或者至少您的代理可以从MYUISegmentedControl
属性访问这些属性。
您也可以使用类别而不是子类。