.xib

2013-02-25 64 views
10

से पुन: प्रयोज्य NSView मेरे आवेदन के कई हिस्सों में, मुझे एक नियंत्रण की आवश्यकता है जहां कोई उपयोगकर्ता पासवर्ड दर्ज कर सके। पासवर्ड फ़ील्ड सुरक्षित है, हालांकि मैं चाहता हूं कि उपयोगकर्ता को फ़ील्ड को सादा पाठ में स्विच करने और टाइपो इत्यादि की जांच करने की क्षमता हो।.xib

पासवर्ड फ़ील्ड स्वयं कोई समस्या नहीं है। मैं जिस व्यवहार को चाहता हूं उसे प्राप्त करने के लिए मैंने NSSecureTextField को उपclassed। मैं इसे बाध्य कर देता हूं, इसलिए मैं डिस्प्ले को दूसरे नियंत्रण से टॉगल कर सकता हूं (कहें, एक चेकबॉक्स)।

enter image description here enter image description here

अब, मैं अपने आवेदन के कई स्थानों में यह पुन: उपयोग करना चाहते हैं। मैं बस अपने कस्टम सुरक्षित टेक्स्ट फ़ील्ड का उपयोग कर चेकबॉक्स के साथ-साथ मुझे इसकी आवश्यकता भी कर सकता हूं। लेकिन मैं इन टुकड़ों को एक पुन: प्रयोज्य घटक में समूहित करना पसंद करूंगा।

तो मैं एक इंटरफ़ेस बिल्डर का उपयोग कर बनाने के लिए:

enter image description here

अब, मैं कैसे उपयोग कर सकते हैं कि मेरी अलग खिड़कियों में? मैं अपनी खिड़की करने के लिए एक 'कस्टम दृश्य' घटक को शामिल किया है, और यह उचित रूप से टाइप है सेट:

enter image description here

लेकिन रनटाइम पर, मैं सिर्फ एक खाली जगह मिलता है।

1 - संभवतः क्योंकि मेरा विचार एक .xib में परिभाषित किया गया है - मुझे .xib से अपना पासवर्ड दृश्य उदाहरण लोड करने के लिए कोड में कुछ करने की आवश्यकता है; लेकिन मुझे वास्तव में क्या करने की ज़रूरत है? मुझे यह काम करने में परेशानी हो रही है।

विशेष रूप से:

  • प्रक्रिया/एपीआई एक .xib से मेरे विचार का एक उदाहरण लोड करने के लिए क्या है? मैं इस पर दस्तावेज खोजने के लिए संघर्ष कर रहा हूँ।

  • एक बार जब मैंने अपने विचार का एक उदाहरण लोड किया है, तो इसे मेरे कस्टम व्यू 'प्लेसहोल्डर' के स्थान पर कैसे डालें? संभवतः मुझे अपने कस्टम व्यू के लिए एक आउटलेट चाहिए, लेकिन फिर क्या? क्या मैं सिर्फ अपना भारित उदाहरण आउटलेट में असाइन करता हूं? क्या मुझे इसे आउटलेट के सबव्यू के रूप में जोड़ना है?

  • यह तर्क कहां होना चाहिए? AwakeFromNib के अंदर, init के अंदर?

2 - मुझे पता है मैं अपने कस्टम दृश्य (example) के लिए एक NSViewController उपयोग कर सकते हैं, और यह कि जिस तरह से लोड करते हैं। लेकिन क्या मुझे इसके लिए वास्तव में एक व्यू कंट्रोलर चाहिए? ऐसा लगता है कि मुझे केवल स्टैंडअलोन दृश्य बनाने और उन्हें आसानी से चालू करने में सक्षम होना चाहिए ... लेकिन शायद यह कोको 'रास्ता' नहीं है? ऐसा लगता है कि प्रत्येक उप दृश्य (जो केवल एक टेक्स्ट फ़ील्ड या बटन हो सकता है) के लिए नियंत्रक की आवश्यकता के बिना एकाधिक .xibs से दृश्य लिखने का एक सीधा तरीका होना चाहिए, लेकिन मुझे बस यह नहीं मिल रहा है। ..

अग्रिम धन्यवाद।

+0

आप इसे कहते हैं, आप अपने NSView लोड करने के लिए जब भी आप इसकी आवश्यकता है और देखने में यह जगह कोड की जरूरत है ... इंटरफ़ेस बिल्डर –

+0

@ Daij-Djan के साथ आप कुछ भी नहीं कर सकते हैं धन्यवाद, लेकिन मैंने आपके विशेष चिपकने वाले बिंदु – TheNextman

+0

पर अपने प्रश्न में कुछ विशिष्टताओं को जोड़ा है क्या आईबी से .xib लोड करना संभव है? – tofutim

उत्तर

0

यदि मुझे आपके प्रश्न से मिल रहा है - आपके पास एक एक्सआईबी है जिसमें एक विंडो है जिसमें टेक्स्ट टेक्स्ट और चेकबॉक्स है।

और आप यह xib विंडो हर बार लोड करना चाहते हैं जब आपको पासवर्ड फ़ील्ड दिखाने की आवश्यकता होती है।


मैं तुम्हें एक खिड़की बनाने के लिए नहीं सुझाव है, तो आप एक passwordTextField और एक चेकबॉक्स के साथ NSView बना सकते हैं।

और सभी खिड़कियों में एक खाली दृश्य खींचते हैं और आप इस xib दृश्य को उस पर लोड कर सकते हैं, इसलिए एक ही ऑब्जेक्ट को कई बार उपयोग किया जा सकता है।


संपादित:

यहां कुछ नमूना कोड कैसे मैं मुख्य विंडो पर एक labelView लोड करने के लिए इस्तेमाल करते हैं।

#import "AppDelegate.h" 

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize myLabelViewController; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ 

    myLabelViewController=[[LabelView alloc] initWithNibName:@"LabelView" bundle:nil]; 
    [_window setContentView:[myLabelViewController view]]; 

} 

@end 

LabelView.h

#import <Cocoa/Cocoa.h> 

@interface LabelView : NSViewController 

@end 

LabelView.m

#import "LabelView.h" 

@implementation LabelView 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Initialization code here. 
    } 

    return self; 
} 

@end 
+0

धन्यवाद। मैंने अपने व्यक्तिगत घटकों वाले एक पुन: प्रयोज्य एनएसवी व्यू बनाया है। मेरा प्रश्न विशेष रूप से फिर से उपयोग किए जाने वाले दृश्यों में xib को लोड करने के मुद्दे से संबंधित है। मैंने अपने विशिष्ट चिपकने वाले बिंदुओं पर कुछ स्पष्टीकरण जोड़ा है। – TheNextman

+0

तो क्या आप आवश्यक स्थान/दृश्य पर दृश्य लोड करने पर फंस गए हैं? –

+0

हां; तकनीकी रूप से मैं इसे समझ नहीं सकता और मुझे दस्तावेज़ ढूंढने में परेशानी हो रही है। मैं इसे तकनीकी पक्ष की कोशिश करने और समझने के लिए सैद्धांतिक 'कोको रास्ता' को भी समझ नहीं पा रहा हूं – TheNextman

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

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