2012-08-01 8 views
5

जब मैं अपने UIToolBar पर एक किया गया बटन क्लिक किया जाता है तो मैं "TableViewController" के .nib को लाना चाहता हूं। लेकिन नीचे क्लिक को एक नया दृश्य लाने की इजाजत नहीं है। मैं इसे कैसे सुधार सकता हूं? कृपया मुझे दिखाएं कि मैं गलत कहां गया और क्या बदला जाना चाहिए और क्यों।barbuttonitem कार्रवाई कैसे करें?

//Here's the selector in my overlay. 
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: 
UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed)]; 

//Here's how I made my action. Btw, the uitoolbar has no nib, it's an overlay on the 
//(camera mode). 

-(void)doneButtonPressed { 
TableViewController *tableView = [[TableViewController alloc] 
initWithNibName:@"TableViewController" bundle:nil]; 
tableView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self presentModalViewController:tableView animated:YES]; 
} 


//Yet nothing happens when I click on my done button on my overlay. And I've made sure 
// i've imported .h frameworks correctly too. 

मान लीजिए आप एक barbuttonitem जो एक UItoolbar ओवरले पर है से एक निब को लाने के लिए थे। आपको इसे कैसे करना होगा?

मुझे बताया गया था कि इसे ठीक से काम करने के लिए मुझे [barButtonItem addTarget: self action: @selector (doneButtonPressed) के लिए जोड़ना होगा: नियंत्रण नियंत्रण: UIControlEventTouchUpInside]; । नहीं मिला (करने के लिए 'वापसी प्रकार चूक -': लक्ष्य: कार्रवाई: forControlEvents initWithBarButtonSystemItem '

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: 
UIBarButtonSystemItemDone addTarget:self action:@selector(doneButtonPressed) 
forControlEvents:UIControlEventTouchUpInside]; 

कौन मुझ में परिणाम एक पढ़ने "उदाहरण विधि त्रुटि मिल रही है:

लेकिन अगर मैं इसे जोड़ने मैं इस मिल आईडी ') "

मुझे केवल सही योजक दिखाने के बजाय, कृपया मुझे यहां दिए गए कोड के अतिरिक्त समाधान दिखाएं।

उत्तर

5

यदि आप एक्सकोड 4 का उपयोग कर रहे हैं, तो आप अपने .h फ़ाइल में BarButtonItem खींचें, और आप स्वचालित रूप से वहां से एक आईबी क्रिया बना सकते हैं।

+0

मैंने बारबूटोनिटम प्रोग्रामेटिक रूप से बनाया क्योंकि टूलबार पर इसे प्रोग्रामेटिक रूप से बनाया गया था, इसलिए आईबी का उपयोग व्यवहार्य नहीं है। – Capricorn

1

UIBarButtonItem डिफ़ॉल्ट UIControlEventTouchUpInside का पालन करता है और आप इसे सेट नहीं कर सकते हैं। Xcode आवंटित करने के लिए तरीके स्वतः-सुझाव चाहिए, लेकिन सही कोड है:

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed)]; 

ध्यान दें, कोई forControlEvents:

+0

तो मुझे क्या संदेह करना चाहिए कि शून्य विधि आपके सुझावों के अनुसार इसे संशोधित करने के बाद भी एक नए दृश्य में स्विचिंग निष्पादित नहीं करती है? – Capricorn

+1

सबसे पहले, ब्रेकपॉइंट सेट करें और देखें कि विधि कहां जा रही है या नहीं। इसके अलावा: '[स्वयं उपस्थित दृश्य नियंत्रक: तालिका दृश्य एनिमेटेड: हाँ पूर्णता: शून्य]; ' – runmad

1

इन परिवर्तनों का प्रयास करें:

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)]; 

-(void)doneButtonPressed:(id)sender 
{ 
} 

लक्ष्य उद्देश्य यह है कि कार्रवाई शुरू कर दी है (यानी UIBarButtonItem ही)

दूसरे, एक ब्रेकपाइंट अपने doneButtonPressed समारोह में सेट किया जाता है। यदि, उदाहरण के लिए, tableView शून्य पर सेट हो रहा है, तो आप कुछ भी नहीं देखेंगे। यानी शायद इस दृश्य नियंत्रक को तुरंत चालू करने में कोई समस्या है।

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