0

UIPickerView在 XIB 中有一个,并且我有修改此视图中其他元素的事件:

- (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,我正在监听点击并能够成功地对它们进行干预。我想要做的是改变 the 的值UIPickerView并让它改变glossaryTerms's 的值,如上所示。

如果您需要更多说明,请发表评论,我会相应地更新问题。谢谢

4

1 回答 1

2

扩展伦纳德要求你做的事情..

要收听通知,您需要为其注册一个观察者。因此您可以在 ViewDidLoad: 或 Viewcontroller.m 的 ViewWillAppear 中执行此操作

[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@selector(NotificationPosted:) name:@"ClickedInWebView" object:nil];

然后在 Viewcontroller.m 中。执行方法“通知发布

-(void)NotificationPosted:(NSNotification *)notification {

NSLog(@"Something happened");
//change the picker here.
 }

之后,在 webView.m 中,您可以在想要更改选取器视图中的值时发布通知。

[[NSNotificationCenter defaultCenter] postNotificationName:@"ClickedInWebView" object:nil userInfo:nil]

;

或者,您也可以通过 NSDictionary 传递 NSString 或 NSNumber。

NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:value, @"keyName", nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"ClickedInWebView" object:nil userInfo:userInfo];

然后,您可以在该实现方法中的视图控制器中使用此字典。使用notification.userinfo.

于 2012-08-27T10:25:44.993 回答