从另一个控制器的UIPickerView更新UIButton的标题

时间:2014-06-30 21:01:27

标签: ios uibutton uipickerview

我有ViewController名为NotepadView.h/.mUIButton的标题为“用户:(选择)”。用户触摸按钮后,UIPickerView会显示为弹出框,从UserPickerViewController.h/.m初始化。单击按钮后,选择器中将显示正确的行。但是在实现IBAction之后(点击按钮,从选择器中选择正确的行,然后离开选择器)按钮标题仅在再次按下按钮后才会更新。

我知道这是因为我正在使用touch up inside动作,所以一旦触摸按钮,标题会立即更改为“User:(null)”,直到在正确的行之后第二次触摸它已经在选择器中被选中。如何实现操作,以便在选择选择器行时,它会立即更改按钮标题,而不是用“User:(null)”填充它,直到我再次触摸它?

此外,如何在选择行后退出UserPickerViewController.m,除了在选择器视图之外触摸,还会转回NotepadView.m

NotepadView.m下的

viewDidLoad

[_userBTN setTitle: @"User: (Select)" forState: UIControlStateNormal];

IBAction内部修饰:

- (IBAction)refreshUsername:(id)sender {
    [_userBTN setTitle: [NSString stringWithFormat:@"User: %@",gUserInfo.chosenUserName] forState: UIControlStateNormal];
}

UserPickerViewController.m

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

NSArray *userArray = [gUserInfo availableUsers];
gUserInfo.chosenUserName = [userArray objectAtIndex:row];

}

1 个答案:

答案 0 :(得分:1)

正如@JasonMcDermott建议的那样,我将UserPickerViewController.m更改为包含名为“保存”的UIBarButton。按下按钮后,使用unwindSegue,来自选择器行的字符串存储在名为user的变量中,然后在NotepadView.m上转移到touchUpInside }。