2012-12-31 17 views
11

से UISegmentedControl में परिवर्तन का पता कैसे लगाएं मेरे पास तीन सेगमेंट के साथ UISegmentedControl बटन है। ViewController.m में यह ठीक काम कर रहा है - बटन दबाकर सही तरीके से आग लगती है।एक पृथक IBAction

मेरे पास एक और अलग UIButton है जब इसे दबाया जाता है, इसे पहले(यह देखने के लिए कि कौन सा बटन वर्तमान में दबाया गया है) की जांच करें और उसके बाद उस सेगमेंट मान के अनुसार एक विधि को आग लगाना चाहिए।

यहां अलग कोड UIButton के लिए मेरा कोड है। बटन स्वयं काम कर रहा है, लेकिन मुझे लगता है कि UISegmentedControl के सेगमेंट के वर्तमान मूल्य को कैसे प्राप्त किया जाए।

यहां किसी भी सहायता के लिए बहुत धन्यवाद। मैं OBJ-C पर नया हूं। मुझे पता है कि VisualBasic में ऐसा कैसे करें, इसलिए अधिक वर्बोज़ पक्ष पर दिए गए उत्तरों की सराहना की जाएगी क्योंकि मुझे 'क्यों' पता होना चाहिए। धन्यवाद।

- (IBAction)decodeButton:(id)sender { 
    UISegmentedControl *segment = [UISegmentedControl alloc]; // THIS DOES NOT WORK. 

    if (segment.selectedSegmentIndex == 0) { 
       decode(textToDecode); 
    } else if(segment.selectedSegmentIndex == 1) { 
       decode1(textToDecode); 
    } else if(segment.selectedSegmentIndex == 2) { 
       decode2(textToDecode); 
    } 
} 
+0

तरह की कोशिश करो मेरा उत्तर कोशिश करते हैं और मुझे पता है अगर यह मदद करता है –

उत्तर

18

Here एक ट्यूटोरियल using UISegmentedControl in iOS.

बस एक संदर्भ वस्तु और तार इसे ठीक तरह से मालिक फ़ाइल बनाएं है।

IBOutlet UISegmentedControl *segmentedControl; 

तो अब आप किसी भी समय का चयन किया सूचकांक का उपयोग कर सकते .m फ़ाइल

@synthesize segmentedControl; 

में

@property (strong, nonatomic) IBOutlet UISegmentedControl * segmentedControl; 

Synthesize गुण सेट।

- (IBAction)decodeButton:(id)sender { 

    if (segmentedControl.selectedSegmentIndex == 0) { 
       decode(textToDecode); 
    } else if(segmentedControl.selectedSegmentIndex == 1) { 
       decode1(textToDecode); 
    } else if(segmentedControl.selectedSegmentIndex == 2) { 
       decode2(textToDecode); 
    } 
} 
+0

धन्यवाद, @Siba करते हैं। ट्यूटोरियल बिल्कुल वही था जो मुझे देखने की ज़रूरत थी। यह कोड पूरी तरह से काम करता है और ट्यूटोरियल ने मुझे दिखाने के लिए एक लेबल दिया - जो मेरा अगला काम था। 2013 पहले से ही बहुत अच्छी शुरुआत कर रहा है। मैं आप सभी का धन्यवाद करता हूं जिन्होंने जवाब दिया। – mstace

1

इस कोड मतलब है कि आप हर पर एक नया वस्तु पैदा कर रहे क्लिक

UISegmentedControl *segment = [UISegmentedControl alloc] ; 

बात आपको क्या करना है अपने segmentedControl के ले IBOutlet (प्रॉपर्टी) तो मैं तुम्हारे लिए काम करेंगे। बटन विधि में एक नई वस्तु न बनाएं। जब आप एक आईबीओलेटलेट बनायेंगे तो यह segmentControl पर लिंक होगा और आपका कोड उस समय काम करेगा। धन्यवाद

3

आप अपने कोड से UISegmentedControl *segment = [UISegmentedControl alloc] ; निकाल देना चाहिए, क्योंकि यह आपके UISegmentedControl के कहने नए सिरे से हर बार allocs, बजाय,

किसी भी बिंदु पर बाद के लिए आप UISegmentController

तरह
@property (strong, nonatomic) IBOutlet UISegmentedControl * segment; 

एक आउटलेट बनाने और उसके बाद अपने viewcontroller.m फ़ाइल में, आप

segment.selectedSegmentIndex; 

का उपयोग करके वर्तमान में चयनित खंड प्राप्त कर सकते हैं उम्मीद है कि यह कर भावना,

सादर

4

आपका कोड alloc बटन प्रेस कार्रवाई में हर बार UISegmentedControl। तो sUISegmentedControl निर्माण और इसकी क्रिया के लिए निम्न कोड का उपयोग करें।

SegmentChangeView=[[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Segment1",@"Segment2",@"Segment3",nil]]; 
    SegmentChangeView.frame=CGRectMake(5, 44, self.view.bounds.size.width-10, 33); 
    SegmentChangeView.selectedSegmentIndex=0; 
    SegmentChangeView.segmentedControlStyle=UISegmentedControlStyleBar; 
    SegmentChangeView.momentary = YES; 
    [SegmentChangeView setTintColor:[UIColor blackColor]]; 
    NSDictionary *attributes =[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13],UITextAttributeFont,nil]; 
    [SegmentChangeView setTitleTextAttributes:attributes forState:UIControlStateNormal]; 
    [SegmentChangeView addTarget:self action:@selector(SegmentChangeViewValueChanged:) forControlEvents:UIControlEventValueChanged]; 
    SegmentChangeView.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleBottomMargin; 
    [self.view addSubview:SegmentChangeView]; 

-(IBAction)SegmentChangeViewValueChanged:(UISegmentedControl *)SControl 
{ 
    if (SControl.selectedSegmentIndex==0) 
    { 
      decode(textToDecode); 
    } 
    else if (SControl.selectedSegmentIndex==1) 
    { 
      decode1(textToDecode); 
    } 
else if (SControl.selectedSegmentIndex==2) 
    { 
      decode2(textToDecode); 
    } 


} 
1

इस

- (IBAction)segmentedControlChanged:(id)sender 
{ 
    UISegmentedControl *s = (UISegmentedControl *)sender; 

    if (s.selectedSegmentIndex == 1) 
    { 
     //code 
    } 
    else 
    { 
     //code 
    } 
}