我在XIB中有一个UIPickerView
,我有修改此视图中其他元素的事件:
- (void) pickerView: (UIPickerView *) pickerView didSelectRow: (NSInteger) row inComponent: (NSInteger) component {
[self.definitionBeep play];
self.glossaryTerm.text = [[self.dataSource objectAtIndex:row]objectAtIndex:0];
self.glossaryDefinition.text = [[self.dataSource objectAtIndex:row]objectAtIndex:1];
}
然后我有另一个View
,不用IB构建,以编程方式构建,可以从我的ViewController.m
访问,如下所示:
- (IBAction)someTouchElement:(id)sender{
if(myWebScroller == nil) {
myWebScroller = [[MyWebScroller alloc]
initWithFrame: CGRectMake(15, mainControl.frame.origin.y, mainControl.frame.size.width, mainControl.frame.size.height)
title:@" MY TITLE"
category:myCat];
[self.view addSubview: myWebScroller];
}
}
在MyWebScroller
内,我正在收听点击次数,并且能够成功地对其进行搜索。我想要做的是更改UIPickerView
的值,并让它更改glossaryTerms
的值,如上所示。
如果您需要更多说明,请发表评论,我会相应更新问题。感谢
答案 0 :(得分:2)
扩展伦纳德要求你做的事情......
要收听通知,您需要为其注册观察者。所以你可以在ViewDidLoad:或Viewcontroller.m的ViewWillAppear中执行此操作
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(NotificationPosted :) name:@“ClickedInWebView” 对象:无];
然后在Viewcontroller.m中。实施方法“通知已发布”
- (void)NotificationPosted:(NSNotification *)通知{
NSLog(@"Something happened"); //change the picker here. }
在此之后,在webView.m中,只要您想在选择器视图中更改值,就可以发布通知。
[[NSNotificationCenter defaultCenter] postNotificationName:@“ClickedInWebView”对象:nil userInfo:nil]
或者,您也可以通过NSDictionary传递NSString或NSNumber。
NSDictionary * userInfo = [NSDictionary dictionaryWithObjectsAndKeys:value,@“keyName”,nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@“ClickedInWebView”对象:nil USERINFO:USERINFO];
然后,您可以在该实现方法的viewcontroller中使用此字典。使用notification.userinfo
。