Iphone 使用编辑按钮更改分段控件的标题?

Iphone 使用编辑按钮更改分段控件的标题?,iphone,xcode,edit,uisegmentedcontrol,Iphone,Xcode,Edit,Uisegmentedcontrol,我想有一个编辑按钮,按下时,我想能够选择一个分段控制和编辑段标题我选择并保存它。这是可能的吗?我花了一些时间想出了这个例子,但它就在这里 以下是我的UIViewController头文件中的内容: @interface optionsViewController : UIViewController <UIPopoverControllerDelegate, UITextFieldDelegate> { IBOutlet UISegmentedControl *

我想有一个编辑按钮,按下时,我想能够选择一个分段控制和编辑段标题我选择并保存它。这是可能的吗?

我花了一些时间想出了这个例子,但它就在这里

以下是我的UIViewController头文件中的内容:

@interface optionsViewController : UIViewController <UIPopoverControllerDelegate, UITextFieldDelegate> {
    IBOutlet UISegmentedControl *       centerAreaSizeSelector;

    // Added to support this example
    UISegmentedControl * controlBeingEdited;
    unsigned int segmentBeingEdited;
}

-(IBAction)centerAreaSizeSelector:(id)sender;
@end
实现以下3个UITextFieldDelegate方法,如下所示

// Implement the keyboard delegate routines
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    [textField release];
    controlBeingEdited = nil;
    segmentBeingEdited = 0;
    return YES;
}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    NSString * theString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    [controlBeingEdited setTitle:theString forSegmentAtIndex:segmentBeingEdited];

    return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField{
    [controlBeingEdited setTitle:textField.text forSegmentAtIndex:segmentBeingEdited];
}
这将实现对UISegmentedControl元素的逐键可见编辑

注: 如果文本大于控件提供的空间,则这不会以任何方式实现可能需要的自动调整大小

这也不会实现任何形式的可见光标或可见选择代码


这将在字符串的最后一个字符后保留文本字段插入符号位置。在编辑之前,它会将当前UISegmentedControl的文本复制到不可见的文本字段中,这样您就不会丢失副本,尽管在编辑之前可以很容易地对其进行编辑以清除这两个文本。

这应该可以通过检测事件,然后执行类似于打开UITextField的操作来实现。然后使用UISegmentedControl的setTitle:forSegmentAtIndex:方法退出UITextField。刚刚添加了一个示例,其中包含我拥有的应用程序的实际工作代码,显然我不需要此功能,但这是一个很好的起点。希望这有帮助:-)这样,无论我有多少个UISegmentedControl,用户都可以选择要编辑的标题?是的,基本上是这样。对于每个UISegmentedControl操作,您将使用分配给该操作的UISegmentedControl以及正在点击的实际段替换我描述的最下面的两行。对每个控件执行此操作,这应该足够健壮,可以处理多少个控件,每个控件中有多少个项目!!!试试看,我已经测试过它是否有效:-)得到警告:我想这就是它不起作用的原因//将ID UITexfield委托分配给不兼容类型的MyViewController。textField.delegate=self;所以,当您说“用分配给该操作的UISegmentedControl替换我描述的最下面的两行”时,您的意思是用我的控件名替换“controlBeingEdited”?对吗?对!我还假设分段控件将位于UIViewController中控制的视图上!
// Implement the keyboard delegate routines
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    [textField release];
    controlBeingEdited = nil;
    segmentBeingEdited = 0;
    return YES;
}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    NSString * theString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    [controlBeingEdited setTitle:theString forSegmentAtIndex:segmentBeingEdited];

    return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField{
    [controlBeingEdited setTitle:textField.text forSegmentAtIndex:segmentBeingEdited];
}