2010-12-18 9 views
5

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

alt text

और यहाँ है प्रासंगिक कोड:

हैडर फ़ाइल:

#import <UIKit/UIKit.h> 

@interface ParkingRootViewController : UIViewController { 
    UINavigationController *navigationController; 
    UIToolbar *toolbar; 
    UIBarButtonItem *lastUpdateLabel; 
} 

@property(nonatomic, retain) IBOutlet UINavigationController *navigationController; 
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar; 
@property (nonatomic, retain) IBOutlet UIBarButtonItem *lastUpdateLabel; 

- (IBAction)selectHome:(id)sender; 

@end 

कार्यान्वयन फ़ाइल:

- (void)viewDidLoad { 
     [super viewDidLoad]; 

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 150.0f, 20.0f)]; 
    label.text = @"last updated..."; 
    label.textColor = [UIColor colorWithWhite:1.0 alpha:1.0]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.font = [UIFont boldSystemFontOfSize:13.0]; 
    label.userInteractionEnabled = NO; 

    lastUpdateLabel = [[UIBarButtonItem alloc] initWithCustomView:label]; 
    [label release]; 
    [toolbar setItems:[NSArray arrayWithObject:lastUpdateLabel]]; 


    [self.view addSubview:self.navigationController.view]; 
    //[self.view addSubview:toolbar]; 
    //[self.navigationController.view addSubview:toolbar]; 

    [self.navigationController.view setFrame:self.view.frame]; 

} 

किसी भी मदद की है यहाँ मेरी कनेक्शन आईबी में हैं अत्यधिक सराहनीय!

संपादित करें:

मैं हटा दिया जो कुछ भी मैं निब में था जो उपकरण पट्टी प्रकट करने के लिए/का कारण होता है संशोधित किया जा और मैं निम्नलिखित करने के लिए viewDidLoad में मेरी कोड अद्यतन:

self.navigationController.toolbarHidden = NO; 

    //creating label in tool bar 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 150.0f, 20.0f)]; 
    label.text = @"last updated..."; 
    label.textColor = [UIColor colorWithWhite:1.0 alpha:1.0]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.textAlignment = UITextAlignmentCenter; 
    //label.highlightedTextColor = [UIColor colorWithWhite:0.5 alpha:1.0]; 
    //label.highlighted = YES; 
    label.font = [UIFont systemFontOfSize:13.0]; 
    label.userInteractionEnabled = NO; 

    UIBarButtonItem *lastUpdateLabel = [[UIBarButtonItem alloc] initWithCustomView:label]; 
    //[lastUpdateLabel initWithCustomView:label]; 
    //[label release]; 
    //[toolbar setItems:[NSArray arrayWithObject:lastUpdateLabel]]; 
    [self setToolbarItems:[NSArray arrayWithObject:lastUpdateLabel]]; 

और मैं अंत एक खाली टूलबार दिखा रहा है। मैं डिबगर ऊपर आग और यह मैं क्या देख रहा है: enter image description here अहा! lastUpdateLabel का दृश्य _text फ़ील्ड दायरे से बाहर है! पर क्यों? और मैं इसका कैसे उपाय करूंगा? अग्रिम में धन्यवाद!

संपादित करें 2:

मैं और लेबल जोड़ने के लिए सक्षम किया गया है निम्नलिखित कोड के साथ एक NSActivityIndicator:

@synthesize refreshDataButton; 
//... 
self.navigationController.toolbarHidden = NO; 

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20.0f, 0.0f, 80.0f, 40.0f)]; 
    label.text = @"last updated..."; 
    label.textColor = [UIColor colorWithWhite:1.0 alpha:1.0]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.font = [UIFont systemFontOfSize:13.0]; 
    label.userInteractionEnabled = NO; 
    [self.toolbar addSubview:label]; 

// create activity indicator 
    //      dist frm lft, dist frm top 
    CGRect frame = CGRectMake( 90.0,   11.0,  25.0, 25.0);  
    UIActivityIndicatorView *loading = [[UIActivityIndicatorView alloc] initWithFrame:frame]; 
    loading.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite; 
    [loading sizeToFit];  
    loading.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | 
           UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | 
           UIViewAutoresizingFlexibleBottomMargin);  
    [loading startAnimating]; 

    [self.toolbar addSubview:loading]; 

लेकिन जब मैं एक UIBarButtonItem मैं सफल न हो पाएं जोड़ने की कोशिश (प्रदर्शित नहीं करता है उपकरण पट्टी में):

#import <UIKit/UIKit.h> 
//#import <CoreData/CoreData.h> 

@interface ParkingRootViewController : UIViewController { 
    UINavigationController *navigationController; 
    UIToolbar *toolbar; 
    UIBarButtonItem *refreshDataButton; 
    //UIActivityIndicatorView *loading; 
} 

@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar; 
@property (nonatomic, retain) UIBarButtonItem *refreshDataButton; 
//@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *loading; 


@property (nonatomic, readonly) NSString *applicationDocumentsDirectory; 

-(IBAction)selectHome:(id)sender; 
-(void)testCoreData; 
-(void)refreshDataButtonTapped; 

@end 
:

self.refreshDataButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:100 target:self action:@selector(refreshDataButtonTapped)]; 
[self setToolbarItems:[NSArray arrayWithObject:refreshDataButton]]; 

यहाँ हेडर फ़ाइल है

कोई विचार? धन्यवाद!

उत्तर

0

कोड काम करता है पोस्ट ठीक है, मुझे लगता है कि यह कैसे XIB को झुका है हो गया है। मैं आईबी में अपने कनेक्शन फिर से करूँगा (यानी सभी कनेक्शन तोड़ें और उन्हें फिर से बनाएं), अपने एक्सआईबी को सेव करें और पुनः प्रयास करें।

+0

के लिए आप क्या सुझाव दिया है, कोई भाग्य था। मैं सिर्फ एक सादा ग्रे टूलबार देखता हूं। कोड की इस पंक्ति में फेंकना: toolbar.bar स्टाइल = UIBarStyleBlackOpaque; वास्तव में काला रंग बदलने के लिए टूलबार प्राप्त होता है, इसलिए कनेक्शन गड़बड़ नहीं होते हैं या कुछ भी ... हालांकि प्रतिक्रिया के लिए धन्यवाद। – Stunner

12

कोड काम करना चाहिए ... वहाँ सुझाव की जोड़ी मैं कर सकता है कर रहे हैं। बजाय: इसके अलावा

[toolbar setItems:[NSArray arrayWithObject:lastUpdateLabel] animated:YES]; 

, जब से तुम एक UINavigationController का उपयोग कर रहे, NavControllers अपने स्वयं के उपकरण पट्टी है कि आप अगर आप की तरह इस्तेमाल कर सकते हैं के साथ आते हैं:

[toolbar setItems:[NSArray arrayWithObject:lastUpdateLabel]]; 

इस प्रयास करें।डिफ़ॉल्ट रूप से यह जो आप ऐसा करने से दृश्यमान बना सकते हैं छिपा हुआ है,:

self.navigationController.toolbarHidden = NO; 

और आप ऐसा करके अपने टूलबार आइटम सेट कर सकते हैं:

[self setToolbarItems:[NSArray arrayWithObject:lastUpdateLabel]]; 

आशा इस टीआईडी ​​बिट में मदद करता है। सौभाग्य!

+0

धन्यवाद, मुझे self.navigationController.toolbarHidden = NO मिला है; मेरे लिए उपयोग/काम करने के लिए। हालांकि मैं अभी भी एक खाली टूलबार का अनुभव कर रहा हूँ। कृपया ऊपर दिए गए मेरे प्रश्न में किए गए संपादन देखें। – Stunner

+2

ऐसा लगता है कि आप दो अलग-अलग टूलबार का उपयोग कर रहे हैं। यदि आप नेविगेशन टूलबार का उपयोग करना चाहते हैं, तो आपको "self.navigationController.toolbar" का उपयोग करके इसका उल्लेख करना होगा। यदि आप अपनी टूलबार का उपयोग कर रहे हैं तो आप इसका उल्लेख कर सकते हैं कि "self.toolbar" का उपयोग करके, अगर इसे किसी संपत्ति के रूप में सेट किया गया हो। आपके सबव्यूव्स को आपके टूलबार में जोड़ा जाना प्रतीत होता है लेकिन नेविगेशन टूलबार के लिए आइटम सेट किए जा रहे हैं। वह जगह जहां मैं समस्या की तलाश करना शुरू कर दूंगा। – Bittu

0

बटन को viewController द्वारा जोड़ा जाना चाहिए जो navigationController द्वारा धक्का दिया जाता है। navController बार रखता है, लेकिन बार पर आइटम viewController द्वारा नियंत्रित (जोड़ा गया) नियंत्रित किया जा रहा है। इस तरह, प्रत्येक अलग-अलग प्रकार के वीसी में इसका अपना बार होता है।

तो barbuttonitem कोड लें, और उसे वीसी के इनिट सेक्शन में डुबकी दें और आनंद लें।

0

// इसे आजमाएं।

- (void)viewDidAppear:(BOOL)animated 
{ 
    [toolbar setItems:[NSArray arrayWithObject:lastUpdateLabel]]; 
} 
0

आप उपकरण पट्टी करने के लिए लेबल जोड़ सकते हैं सीधे यदि u फ्रेम के साथ यह instantiated है ... उदाहरण

UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(7,7,200,30)]; 

    [lbl setBackgroundColor:[UIColor clearColor]]; 

    [lbl setText:@"Test lbl"]; 

    [_toolBar addSubview:lbl]; 

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

  • कोई संबंधित समस्या नहीं^_^