授权:委托方法看不到出口

时间:2014-12-02 10:51:40

标签: ios objective-c delegates delegation

two views中有Tab Bar View。我希望我的second视图通知first视图,其文本字段的值已更改。我已经为它完成了所有必要的编码,但有一个问题 - first视图在方法声明中没有看到连接的标签出口。

second视图的代码:

- (IBAction)textFieldHasChanged:(UITextField *)sender {

id<HPAAddCarOverallInfoTVCDelegate> strongDelegate = [[HPAAddCarMainViewController alloc] init];

if([strongDelegate respondsToSelector:@selector(addCarOverallInfoVC:textFieldValueChanged:)]) {

    [strongDelegate addCarOverallInfoVC:self textFieldValueChanged:sender.text];
    }
}

first视图的代码:

-(void)addCarOverallInfoVC:(HPAAddCarOverallInfoTableViewController *)viewController textFieldValueChanged:(NSString *)value
{
self.overallVCFieldCount.text = value;
NSLog(@"%@", value);
}

self.overallVCFieldCount.text = value; - 值存在,但textField没有。

我认为,问题属于这行代码:

id<HPAAddCarOverallInfoTVCDelegate> strongDelegate = [[HPAAddCarMainViewController alloc] init];

我想,该代表并不是我正在使用的确切视图。通过故事板同时加载Bouth视图。如果我的想法是正确的,你能告诉我吗,当Tab Bar View控制器进入屏幕时,如何指向精确的first视图,其中second视图被加载?

1 个答案:

答案 0 :(得分:0)

您正在textFieldHasChanged中创建新的视图控制器。如果您在IB中有该视图控制器,请将其实例化为:

UIStoryboard *st = [UIStoryboard storyboardWithName:[[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"] bundle:[NSBundle mainBundle]];
id<HPAAddCarOverallInfoTVCDelegate> strongDelegate = st instantiateViewControllerWithIdentifier:@"identifier"];

identifier是您在故事板中为视图控制器提供的标识符。