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