2011-04-21 15 views
8

मुझे पता है कि UIPickerViews एक पंक्ति का चयन करते समय लेबल इत्यादि अपडेट करने के लिए एक didSelectRow विधि का उपयोग करते हैं।UIDatePicker DidSelectRow विधि?

मेरे पास एक UIDatePicker है जो एक पंक्ति का चयन करता है जब एक पंक्ति का चयन किया जाता है और किया जाता है बटन दबाया जाता है, लेकिन मैं एक UILabel भी चाहता हूं जो प्रत्येक चयन के साथ अद्यतन करता है, इसलिए उपयोगकर्ता अद्यतन के रूप में अद्यतन रहता है। मुझे दिनांक पिकर के लिए didSelectRow जैसी कोई विधि नहीं मिल रही है। यह कैसे संभव है?

- (IBAction)dateButtonPressed 
{ 
    [dateView setFrame:CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, self.view.frame.size.height)]; 
    [self.view addSubview:dateView]; 

    UIBarButtonItem *acceptButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismssPickerChangeDate)]; 
    self.navigationItem.rightBarButtonItem = acceptButton; 
    [acceptButton release]; 

    UIBarButtonItem *cancelButton1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismssPickerCancel)]; 
    self.navigationItem.leftBarButtonItem = cancelButton1; 
    [cancelButton1 release]; 

    self.navigationItem.title = @"Select Date"; 
    self.navigationItem.hidesBackButton = YES; 
    [UIView animateWithDuration:.5 animations:^{ 
     [dateView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    }]; 
    NSDate *myDate = picker.date; 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    //NSDate *date = [NSDate date]; 
    [dateFormatter setDateFormat:@"MMM d y"]; 
    NSString *dateString = [dateFormatter stringFromDate:myDate]; 
    NSLog(@"New Date is = %@",dateString); 
    dateLabel.text = dateString; 
} 

उत्तर

25

UIDatePicker एक UIControl है, इसलिए

[picker addTarget:yourController action:@selector(yourAction:) forControlEvents:UIControlEventValueChanged]; 

का उपयोग अपने नियंत्रक के लिए एक संदेश भेजने के लिए। नियंत्रक तब दिनांक पिकर की स्थिति प्राप्त कर सकता है और लेबल को अपडेट कर सकता है।

अपने पिकर और अपने लेबल एक ही कक्षा में, viewDidLoad में दोनों दुकानों रहे हैं:

[self.picker addTarget:self action:@selector(updateLabelFromPicker:) forControlEvents:UIControlEventValueChanged]; 

फिर updateLabelFromPicker बनाएँ:

- (IBAction)updateLabelFromPicker:(id)sender { 
    self.label.text = [self.dateFormatter stringFromDate:self.picker.date];  
} 

आप एक NSDateFormatter को सुंदर बनाने की तारीख चाहता हूँ ।

+0

धन्यवाद टेरी, मैं थोड़ी उलझन में हूं कि "आपके नियंत्रक" के साथ क्या करना है। वर्तमान में मेरे पास तारीख पिकर और डेट लेबल के लिए आउटलेट है, जिसे मैं रीयलटाइम अपडेट करना चाहता हूं। –

+0

मैंने इसे अधिक विस्तार से अपडेट किया। जिस कक्षा में आपने अपना आउटलेट घोषित किया है वह आपका नियंत्रक है। –

+0

मेरे पास सभी NSFormatter सेटअप हैं क्योंकि मेरे पास एक और लेबल है जो उपयोगकर्ता प्रेस के बाद अद्यतन करता है, इसलिए मुझे इसे वास्तविक समय के रूप में कॉन्फ़िगर करना होगा। मुझे आपके द्वारा पोस्ट किए गए कोड के साथ खेलने दें, धन्यवाद। –

1

एक दिनांक पिकर चीजों को थोड़ा अलग करता है। प्रलेखन से:

ठीक से कॉन्फ़िगर किए जाने पर, एक यूआईडीएटीपीकर ऑब्जेक्ट एक क्रिया संदेश भेजता है जब कोई उपयोगकर्ता दिनांक या समय बदलने के लिए पहियों में से किसी एक को घूर्णन करता है; संबंधित नियंत्रण घटना UIControlEventValueChanged है।

चूंकि एक यूआईडीएटीपीकर यूआईसींट्रोल से विरासत में आता है, तो आपके पास अपेक्षा की जाने वाली सभी विभिन्न स्पर्श घटनाओं तक पहुंच है (TouchUpInside, आदि)।

संबंधित मुद्दे