2011-08-16 10 views
5

मैंने इंटरफ़ेस बिल्डर का उपयोग करके टूलबार जोड़ा है, लेकिन मुझे रनटाइम/सशर्त रूप से बटन जोड़ने की आवश्यकता है। मुझे कोई त्रुटि नहीं मिल रही है, लेकिन मेरे गतिशील बटन टूलबार पर नहीं दिख रहे हैं। मैंने सत्यापित किया है कि arrayOfModulesScreens मुझे आवश्यक डेटा से भरा हुआ है। कम से कम यह काम करता है (:))। क्या मुझे बटन को UIView में जोड़ने की आवश्यकता है, फिर उस दृश्य को टूलबार में जोड़ें? बस जोर से सोच रहा हूँ। शायद शुरू करने के लिए एक बेहतर तरीका है? संकल्प के लिए अग्रणी किसी भी सुराग के लिए अग्रिम धन्यवाद।यूआईटीयूएलबार को प्रोग्रामेटिक रूप से यूआईबटन कैसे जोड़ता है?

CustomFormController.h

@interface CustomFormController : UIViewController { 
    UIToolbar *screensBar; 
} 

CustomFormController.m

EPData *epData = [[EPData alloc] init]; 
NSArray *screens = [epData loadPlistIntoArray:@"Screens"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"process_module_id == %@", process_modulesID]; 
NSArray *arrayOfModulesScreens = [screens filteredArrayUsingPredicate:predicate]; 

for(int i=0; i < [arrayOfModulesScreens count]; i++) { 
    NSDictionary *dictRow = [arrayOfModulesScreens objectAtIndex:i]; 
    UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
    [button setTitle:[dictRow objectForKey:@"screen_title"] forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; 
    [screensBar addSubview:button]; 
} 

उत्तर

8

आप वास्तव में, तुम बस एक या अधिक UIBarButtonItems बनाने एक UIBarButtonItem (एक UIButton नहीं) उपकरण पट्टी में जोड़ने के लिए इच्छुक रहे हैं, तो उन्हें एक NSArray (या NSMutableArray) में रखें, और टूलबार की items संपत्ति को उस सरणी को असाइन करें। विवरण के लिए the UIBarButtonItem documentation देखें। अपने कोड का उपयोग ऊपर, कुछ इस तरह लग सकता है कि:

NSMutableArray *items = [NSMutableArray array]; 
    for (int i = 0; i < [arrayOfModulesScreens count]; i++) { 
     NSDictionary *dictRow = [arrayOfModulesScreens objectAtIndex:i]; 
     UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:[dictRow objectForKey:@"screen_title"] 
                    style:UIBarButtonItemStyleBordered 
                    target:self 
                    action:@selector(buttonClick:)]; 
     [items addObject:button]; 
     [button release]; 
    } 
    screensBar.items = items; 

(आप, ज़ाहिर है, तो अपने buttonClick: बदलने के लिए की आवश्यकता होगी एक UIButton के बजाय एक UIBarButtonItem उम्मीद करना)।

तुम सच में वहाँ में एक UIButton डाल करने के लिए चाहते हैं, तो आपको पहले UIButton, कुछ इस तरह की एक UIBarButtonItem में रैप करने के लिए की जरूरत है:

UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease]; 

तब के रूप में ऊपर स्थित टूलबार के लिए आइटम जोड़ें।


क्यों अपने बटन आपके द्वारा प्रेषित कोड में दिखाई नहीं दे रहे है, समस्या यह है कि UIButton के buttonWithType: शून्य चौड़ाई और शून्य ऊंचाई के साथ एक बटन बनाता है। शीर्षक दिखाने के बाद आपको बटन को आकार देने (मैन्युअल रूप से या sizeToFit का उपयोग करके) का आकार बदलना होगा। इसे ठीक करने के बाद, आप देखेंगे कि बटन पैरेंट दृश्य के ऊपरी-बाएं कोने में एक दूसरे के शीर्ष पर हैं; आपको उन्हें मैन्युअल रूप से उचित रूप से स्थानांतरित करने की आवश्यकता होगी।

+1

यह एक आकर्षण की तरह काम करता था। तुम लोग कमाल के हो! – iamtoc

+0

यह सही समझ में आता है कि क्यों कोई छवि दिखाई नहीं दे रही थी।उस पर छूने के साथ-साथ एक बेहतर विकल्प प्रदान करने के लिए धन्यवाद। – iamtoc

1

मुझे नहीं लगता कि आप navigationController को सीधे अपने कोड में बदल सकते हैं।

का अधिक सुरक्षित तरीका यह होगा:

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:[dictRow objectForKey:@"screen_title"] 
                  style:UIBarButtonItemStyleBordered 
                  target:self 
                  action:@selector(buttonClick:)]; 
self.navigationItem.rightBarButtonItem = button; 
1

उपकरण पट्टी दृष्टिकोण

एक समस्या यह जोड़ने UIButtonUIToolBar के लिए बटन और बटन की स्थिति की कि चौड़ाई है साथ

नियंत्रित करने के लिए मुश्किल है

सरल दृष्टिकोण

टूलबार को निकालें और UIView को पृष्ठभूमि छवि के साथ रखें जो आपके टूलबार के समान है। अब आप उस दृश्य के उप-दृश्य के रूप में UIButton जोड़ सकते हैं। इस तरह आप स्थिति और बटन की चौड़ाई पर अधिक नियंत्रण रखते हैं। इसके अलावा आप अन्य विचार भी जोड़ सकते हैं।

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