0

UIPickerViewXIB に があり、このビュー内の他の要素を変更するイベントがあります。

- (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次のように my からアクセスします。

- (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

さらに明確にする必要がある場合は、コメントしてください。それに応じて質問を更新します。ありがとう

4

1 に答える 1

2

レナードがあなたに頼んだことを拡張します..

通知をリッスンするには、オブザーバーを登録する必要があります。したがって、ViewDidLoad: または Viewcontroller.m の ViewWillAppear で実行できます。

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

次に Viewcontroller.m で。メソッド「 Notification Posted」を実装する

-(void)NotificationPosted:(NSNotification *)通知 {

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];

次に、実装されたメソッドのviewcontrollerでこの辞書を使用できます。使用してnotification.userinfoください。

于 2012-08-27T10:25:44.993 に答える