IB_DESIGNABLE, IBInspectable - इंटरफ़ेस बिल्डर अपडेट नहीं होता है


91

मेरे पास कोड का निम्नलिखित सेट है:

CustomView.h

#import <UIKit/UIKit.h>

IB_DESIGNABLE
@interface CustomView : UIView

@property (nonatomic) IBInspectable UIColor *borderColor;
@property (nonatomic) IBInspectable CGFloat borderWidth;
@property (nonatomic) IBInspectable CGFloat cornerRadius;

@end

CustomView.m

#import "CustomView.h"

@implementation CustomView

- (void)setBorderColor:(UIColor *)borderColor {
    _borderColor = borderColor;
    self.layer.borderColor = borderColor.CGColor;
}

- (void)setBorderWidth:(CGFloat)borderWidth {
    _borderWidth = borderWidth;
    self.layer.borderWidth = borderWidth;
}

- (void)setCornerRadius:(CGFloat)cornerRadius {
    _cornerRadius = cornerRadius;
    self.layer.cornerRadius = cornerRadius;
}

@end

(स्विफ्ट संदर्भ के लिए, स्विफ्ट कोड के साथ भी यह समस्या थी)

CustomView.swift

@IBDesignable
class CustomView : UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    @IBInspectable var borderColor : UIColor = UIColor.clearColor() {
        didSet {
            self.layer.borderColor = borderColor.CGColor
        }
    }

    @IBInspectable var borderWidth : CGFloat = 0.0 {
        didSet {
            self.layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius : CGFloat = 0.0 {
        didSet {
            self.layer.cornerRadius = cornerRadius
        }
    }
}

मैंने UIViewस्टोरीबोर्ड पर एक व्यू कंट्रोलर जोड़ा और इसके उपवर्ग को सेट किया CustomView

यहां छवि विवरण दर्ज करें

यह "Designables" पंक्ति को जोड़ता है। यह "अपडेटिंग" पर अटका हुआ है और टूलटिप कहता है "वेटिंग फॉर टारगेट टू बिल्ड"। यह इस स्थिति से कभी नहीं बदलता है।

जब मैं विशेषताओं का निरीक्षण करता हूं, तो मैं इन IBInspectableगुणों को सेट करने में सक्षम हूं :

यहां छवि विवरण दर्ज करें

और एक बार सेट हो जाने पर, वे "उपयोगकर्ता परिभाषित रनटाइम एट्रिब्यूट्स" में भी दिखाई देते हैं:

यहां छवि विवरण दर्ज करें

हालाँकि, "Designables" की स्थिति कभी भी एक ही टूलटिप के साथ "अपडेट" से आगे नहीं बढ़ती है (मैंने कई बार Cmd + B बनाने की कोशिश की है, कुछ भी नहीं बदलता है)।

इसके अलावा, जैसा कि मैंने IBInspectableगुण निर्धारित किए हैं, मुझे हर एक के लिए एक चेतावनी मिलती है:

IBDesignables - "UIView" के उदाहरण के लिए मुख्य पथ " बॉर्डर - बॉर्डर " के लिए उपयोगकर्ता परिभाषित रनटाइम विशेषता की अनदेखी करना ... यह बॉर्डर कुंजी - बॉर्डर के लिए कुंजी-मान कोडिंग-अनुरूप नहीं है।

उत्पन्न चेतावनियों का स्क्रीनशॉट:

यहां छवि विवरण दर्ज करें


मैं कुंजी-मूल्य कोडिंग-अनुरूप मुद्दों से परिचित हूं और आमतौर पर उन्हें हल करने का तरीका जानता हूं ... लेकिन मुझे समझ नहीं आता कि यहां इस मुद्दे को कैसे हल किया जाए। दृश्य के पहचान निरीक्षक के अनुसार, दृश्य एक "CustomView" (एक नियमित "UIView" नहीं है, जिसमें कोई गुण नहीं है)। और अगर दृश्य "CustomView" नहीं थे, तो ये डिज़ाइन किए गए गुण Attributes Inspector में दिखाई नहीं देंगे, है ना? लेकिन जब इंटरफ़ेस बिल्डर इन विशेषताओं को दृश्य पर लागू करने का प्रयास करता है, तो यह सोचकर वापस जाता है कि दृश्य का वर्ग "UIView" है और विशेषताओं को लागू नहीं कर सकता।

कोई मदद? कृपया मुझे बताएं कि क्या मैंने कुछ महत्वपूर्ण विवरण छोड़ दिया है, लेकिन इसके लायक क्या है, मैंने इस ट्यूटोरियल का ठीक-ठीक पालन किया है (ओबजैक बनाम स्विफ्ट के अलावा)। यह भी ध्यान देने योग्य है कि मैंने इस ट्यूटोरियल का अनुसरण दूसरी मशीन पर किया है और यह एक आकर्षण की तरह काम करता है (मेरा इरादा कल रात इस पोस्ट को बनाने का था लेकिन मैं जिस कंप्यूटर पर था तब यह समस्या नहीं थी)।


टिप्पणियों के आधार पर, यह सुझाव दिया गया है कि शायद .mफ़ाइल शामिल नहीं है और यह समस्या का कारण हो सकता है। मुझे लगा कि निश्चित रूप से मैं इस परिदृश्य के लिए अपने रास्ते से हट जाऊंगा, लेकिन मैंने फिर भी जाँच की।

यहां छवि विवरण दर्ज करें

जब मैंने पहली बार ऐसा करने का प्रयास करना शुरू किया, तो मैं इस समझ में था कि IB_DESIGNABLEकक्षाओं को एक अलग UIKitढांचे का हिस्सा होना चाहिए । तो इस पहले स्क्रीनशॉट से, आप देख सकते हैं कि मैंने एक "CustomViews" फ्रेमवर्क स्थापित किया है, जिसमें एक वर्ग है CustomView,। आप यह भी देखेंगे कि मैंने भी एक बनाया है OtherView, जो इसके समान है CustomView, सिवाय इसके कि यह एक अलग ढांचे में नहीं है। समान समस्या हालांकि दोनों वर्गों के बीच स्टोरीबोर्ड पर बनी रहती है।

यहां हमारे पास एक स्क्रीनशॉट है जो दर्शाता है कि फ्रेमवर्क के CustomView.mसाथ बनाया जाना शामिल है CustomViews:

यहां छवि विवरण दर्ज करें

इस बीच, निम्न स्क्रीनशॉट कई चीजों को इंगित करता है:

  • CustomViews.framework मुख्य परियोजना में उचित रूप से शामिल है।
  • OtherView.mएक संकलित स्रोत के रूप में भी शामिल है, इसलिए भले ही कुछ गलत हो CustomView, OtherViewकाम करना चाहिए, हालांकि यह समान त्रुटियों को उत्पन्न करता है।
  • Main.storyboardऔर LaunchScreen.xibलाल के रूप में दिखाई दे रहे हैं। मुझे पता नहीं क्यों, और क्यों LaunchScreen.xibमैं (मैं इस फ़ाइल को नहीं छुआ है) के रूप में मामूली सुराग नहीं है, हालांकि मैं अन्य परियोजनाओं को देखने के बाद कह सकते हैं, Main.storyboardउन परियोजनाओं के लिए लाल रंग में भी दिखाता है, और मैं कर रहा हूँ साथ IB_DESIGNABLEया IBInspectableवहाँ कुछ भी नहीं कर रहा है ।

यहां छवि विवरण दर्ज करें


मैंने कई बार यह कोशिश की है और इसे फिर से लिया है। यह घर पर मेरे कंप्यूटर पर हर बार काम करता है - मैं घर पर इस प्रश्न में वर्णित समस्या को पुन: पेश नहीं कर सकता। काम पर, यह कभी काम नहीं करता है। इस प्रश्न में वर्णित समस्या हर बार होती है।

दोनों कंप्यूटर मैक मिनिस हैं जो इस साल नए खरीदे गए हैं (नए मॉडल नहीं, 2012 के अंत में मॉडल)। दोनों कंप्यूटर OS X Yosemite 10.10 पर चल रहे हैं। दोनों कंप्यूटर Xcode संस्करण 6.1 चला रहे हैं। घर पर, बिल्ड (6A1052d) है। आज सुबह, मैं पुष्टि कर सकता हूं कि दोनों कंप्यूटर एक्सकोड के समान निर्माण चला रहे हैं।

दूसरों ने मुझे सुझाव दिया है कि यह खराब रैम हो सकता है। ऐसा लगता है कि मुझे बहुत दूर जाना है। मैंने कई बार प्रोजेक्ट को पुनरारंभ किया है, कंप्यूटर को कई बार पुनरारंभ किया है। मुझे लगता है अगर लगभग 6 महीने पुराने कंप्यूटर पर खराब रैम थे, तो मैं अन्य समस्याओं को देख रहा हूं, और यह समस्या कम सुसंगत होगी। लेकिन यह सटीक समस्या कई बार पूरी परियोजना को फिर से शुरू करने और कंप्यूटर पर पूर्ण पुनरारंभ करने के बावजूद बनी रहती है।


यह ध्यान देने योग्य होना चाहिए कि अगर मैं वास्तव में इस परियोजना को संकलित करता हूं और चलाता हूं, तो IBInspectableगुणों के साथ कस्टम दृश्य वास्तव में प्रदर्शित होता है जैसा कि मुझे उम्मीद है कि स्टोरीबोर्ड इसे प्रदर्शित करेगा। मुझे लगता है कि हालांकि, यह IB_DESIGNABLEऔर IBInspectableनिर्देश के साथ भी यही होगा , क्योंकि ये उपयोगकर्ता परिभाषित रनटाइम एट्रीब्यूट के रूप में बनाए गए हैं।


खैर, यह सिर्फ एक विचार था। मैंने CustomView.m को लक्ष्य से हटा दिया और फिर ऐप चलाते समय इसी तरह की चेतावनी दी।
मार्टिन आर

ऐसा लगता है कि एक असली ग्रेमलिन एक प्रतीत होता है समान मशीन (जो किसी भी तरह से भिन्न होता है) से आपकी तुलना की जाती है। क्या आपने डेफोरम्स को पोस्ट करने की कोशिश की है? ऐसा लगता है कि आप अतिरिक्त जानकारी के बिना अंधे उड़ रहे हैं, और आपकी प्रक्रिया तर्कसंगत और तर्कसंगत लगती है। "बिल्ड" चेतावनी का अर्थ बहुत अधिक नहीं हो सकता है क्योंकि Xcode भ्रामक त्रुटि संदेशों के साथ व्याप्त है। किक्स के लिए, आपने संपादक की कोशिश की है -> "डिबग चयनित दृश्य", सही? (शायद काम नहीं करेगा, लेकिन एक पवित्रता जांच के लायक है)। इसके अलावा, कुछ भी (लॉगिंग) कंसोल ऐप में नहीं दिखता है?
क्रिस कॉवर

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

के अनुसार चेतावनी दे रहा था। अब मूल आईबी से कॉपी किए गए कोड के साथ एक दूसरा वर्ग बनाया गया है। यह वर्ग पूरी तरह से काम करता है और जब मैंने मूल गैर-कामकाजी वर्ग में वापस स्विच किया, तो अब यह ठीक काम करता है। इससे मैंने यह निष्कर्ष निकाला है कि कहीं न कहीं कुछ कैश है (व्युत्पन्न डेटा में नहीं) जो कि तब तक क्लियर नहीं किया जाता है जब तक कि मूल इब डिजायरेबल को किसी अन्य इब डिज़ाइन के लिए स्वैप नहीं किया जाता है। UIView में बदलने से यह कैश साफ़ नहीं होता है। केवल एक और ib पदनाम। गो आकृति :-)
drekka

जवाबों:


75

चयनित दृश्य को डीबग करने के क्रिसक के सुझाव के आधार पर (जो मैंने पहले ही कर लिया था, लेकिन अच्छे उपाय के लिए फिर से प्रयास करने के लिए गया), मैंने संपादक मेनू के निचले भाग में कुछ अन्य विकल्पों पर ध्यान दिया।

  • दृश्यों को स्वचालित रूप से ताज़ा करें
  • सभी दृश्य ताज़ा करें

मैंने "रिफ्रेश ऑल व्यूज़" पर क्लिक किया और एक्सकोड के थोड़ा सोचने के बाद, अचानक स्टोरीबोर्ड उम्मीद के मुताबिक मेरे विचार प्रदर्शित कर रहा था (ठीक से मेरे IBInspectableगुणों को लागू करना )।

यहां छवि विवरण दर्ज करें

मैं फिर पूरी प्रक्रिया के माध्यम से फिर से पुष्टि करने के लिए चला गया कि यह समाधान है।

मैं, एक नया वर्ग बनाया ThirdView। यह वर्ग दूसरों के समान है, फिर से। मैंने ThirdViewइस बार अपने दृश्य की कक्षा बदल दी और कुछ अलग हो गया:

यहां छवि विवरण दर्ज करें

चेतावनी के लिए मुझे "दिखाएँ" पर क्लिक करें:

यहां छवि विवरण दर्ज करें

इस बार एक नया:

कस्टम क्लास के साथ ऑब्जेक्ट के लिए क्लास यूआईवीईवाई का उपयोग करना क्योंकि क्लास थर्ड व्यू मौजूद नहीं है।

यह वास्तव में पहले से मौजूद किसी भी अधिक उपयोगी नहीं है। साथ ही, अब अन्य तीन चेतावनियां दोगुनी होकर 6 हो गई हैं।

फिर भी, अगर मैं संपादक ड्रॉप डाउन मेनू से "रिफ्रेश ऑल व्यू" पर क्लिक करता हूं, तो सभी त्रुटियां दूर हो जाती हैं, और एक बार फिर, दृश्य ठीक से प्रदर्शित होता है।

फिर भी, इस बिंदु तक, मैंने जो कुछ भी किया वह सामान था जिसे मैंने घर पर कभी गड़बड़ नहीं किया। घर पर, यह सिर्फ काम किया। इसलिए मैंने "स्वचालित रूप से ताज़ा दृश्य" चालू किया और एक "चौथा दृश्य" बनाकर परीक्षण किया - एक बार फिर, पहले तीन के समान।

दृश्य वर्ग को "फोर्थ व्यू" में बदलने के बाद डिजाइनेबल्स लेबल ने कहा कि "अपडेट करना" थोड़े समय के लिए फिर अंत में "अप टू डेट" कहा गया:

यहां छवि विवरण दर्ज करें

इसलिए, मैंने घर पर अपना कंप्यूटर चेक किया। "स्वचालित रूप से ताज़ा दृश्य" उस कंप्यूटर पर चालू होता है जो हमेशा काम कर रहा था। यह कंप्यूटर पर बंद कर दिया गया था जो नहीं था। मुझे इस मेनू विकल्प को छूने की याद नहीं है। मैं आपको यह सुनिश्चित करने के लिए भी नहीं बता सकता कि क्या यह Xcode 6 से पहले मौजूद था। लेकिन यह विकल्प वह है जो अंतर बना रहा था।


TL, DR, यदि आपको प्रश्न में वर्णित समान समस्या हो रही है, तो सुनिश्चित करें कि "IB में अद्यतन की आवश्यकता होने पर" स्वचालित रूप से ताज़ा दृश्य "चालू है (या मैन्युअल रूप से" सभी दृश्य ताज़ा करें "):

यहां छवि विवरण दर्ज करें


2
मैं वास्तव में देख रहा था कि इसे कैसे बंद किया जाए क्योंकि यह पृष्ठभूमि में पुराने मैकबुक को धीमी गति से प्रस्तुत करता रहता है। धन्यवाद!
डिपार्टमेन्ट B B

यह अस्थायी हल हो सकता है, लेकिन @ मार्टिन-गाइल्स लावोई
एशले मिल्स

22

मेरे पास कुछ और विवरण हैं जिनके कारण आपके IBDesignable वर्ग लोड नहीं हो सकते हैं।

अपने समस्याग्रस्त स्टोरीबोर्ड / xib का चयन करें जहाँ आपके कस्टम विचार प्रदर्शित होने चाहिए।

नाविक क्षेत्र में, अपने XCode कार्यक्षेत्र / परियोजना में रिपोर्ट नेविगेटर के प्रमुख।

एक्सकोड के संपादक मेनू में, हिट (जैसा कि एनग्रिफ द्वारा उल्लेख किया गया है), "रिफ्रेश ऑल व्यू" विकल्प। यह आईबी को सामान की एक पूरी गुच्छा के लिए एक संकलन लॉन्च करने का कारण बनेगा, जिसे आप निश्चित हैं, उम्मीद नहीं करेंगे।

रिपोर्ट नेविगेटर में, सामग्री को फ़िल्टर करने के लिए "बाय ग्रुप" पर क्लिक करें और "इंटरफ़ेस बिल्डर" अनुभाग देखें। आप देखेंगे कि कस्टम IBDesignable व्यू फ्रेमवर्क को लोड करने के लिए, यह बहुत सारी चीजों को संकलित करेगा। यदि इनमें से कोई भी लक्ष्य संकलित नहीं करता है, जैसे (शायद पदावनत) इकाई परीक्षण लक्ष्य (भले ही वे इन विचारों या स्टोरीबोर्ड को लोड करने वाले कोड से पूरी तरह से असंबंधित हों), तो आईबी आपके dll को लोड करने में विफल हो जाएगी।

मेरे मामले में, आईबी ने 8 लक्ष्यों को संकलित करने की कोशिश की, जिनमें 4 शामिल हैं कि जहां हाल ही में हम जिस पर काम कर रहे हैं, उसमें सुधार के बाद से यूनिट परीक्षण नहीं किए गए थे।

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


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

मुझे लगता है कि यह हेडर निर्भरता के साथ क्या करना है। डिजाइन करने योग्य कक्षाएं Wether अन्य वर्गों को छू रहे हैं, जिस पल हेडर को देखा जाता है वह उन संबंधित कार्यान्वयन का निर्माण करेगा। Apple XC7GM में स्रोत निर्भरता ग्राफ कोड के साथ कर रहा है, जो XCode क्रैश के साथ हमारे प्रोजेक्ट पर पूरी तरह विफल रहता है जब यह ग्राफ़ का निर्माण कर रहा होता है। निम्नलिखित 7.1betas समस्या को प्रदर्शित नहीं करते हैं। हमारी स्वचालित निर्माण प्रणाली फिलहाल 6.4 पर निर्भर है, इसलिए हमने जांच नहीं की है कि XC6.4 के तहत इसे आगे कैसे हल किया जाए। हम सीधे 7.1GM के लिए कूदेंगे।
मार्टिन-गाइल्स लावोई

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

3
तो, इसके अनुसार, हम यह निष्कर्ष निकाल सकते हैं कि IB_DESIGNABLE विशेषता कुल गंदगी और समय की बर्बादी है। बस इसके इस्तेमाल से बचें।
एमकेबीएब्स

ऊपर सूचीबद्ध समस्या और समाधान से IB_DESIGNABLE का कोई लेना-देना नहीं है। यह आईबी के लिए केवल एक ओपी-ध्वज है जो बेकार चीजों को देखने के लिए है। आपको बस एक साफ घर बनाए रखने की आवश्यकता है।
मार्टिन-गाइल्स लावोई

22

इस समस्या वाले किसी अन्य व्यक्ति के लिए बस एक त्वरित संकेत: चर के प्रकार को निर्दिष्ट करना याद रखें।

// Doesn't show up in IB
@IBInspectable var includeLeftSection = true

// Shows now that it knows the type
@IBInspectable var includeLeftSection : Bool = true

6

Ignoring user defined runtime attribute for key path ..हालांकि मुझे पूरी तरह यकीन है कि मुझे अपने कस्टम IBDesignable व्यू क्लास के साथ कुछ भी गलत नहीं करने पर भी यही चेतावनी थी।

पता चला, मेरे मामले में, यह Xcode कैश के साथ क्या करना है।

rm -rf ~/Library/Developer/Xcode/DerivedData/*

पर्ज DerivedDataऔर चेतावनी चली गई है।


1
उसी परिणाम को प्राप्त करने के लिए XCode में शॉर्टकट: MoK
Mojo66

@ Mojo66 मेरा मानना ​​है कि क्लीन बिल्ड DerivedData फ़ोल्डर को शुद्ध करने से अलग है। बेशक, कुछ समय क्लीन बिल्ड कुछ Xcode कैशिंग समस्याओं को हल करने के लिए पर्याप्त है।
समवेत करें

@ Mojo66 आप शायद मतलब ⌘⌥⇧K (cmd + alt + shift + K)
तजोगा

5

किसी भी अन्य त्रुटि आई बी Designables वर्ग मौजूद नहीं है के खिलाफ आता है, उसी कारण से, जैसा मैंने किया था। शीर्ष उत्तर मेरा मुद्दा नहीं था ... लेकिन यहाँ एक छोटी सी संबंधित समस्या है ...

कहानी बोर्ड स्रोत कोड में एक संपत्ति छिपी हुई है जिसे customModule कहा जाता है।

उदाहरण के लिए मेरे पास एक अलग ढांचे के अंदर फॉरवर्ड एरो नामक एक वर्ग था जिसे मैंने गलती से अपने मुख्य लक्ष्य में जोड़ दिया था।

तो कुछ दृश्यों के लिए XML कस्टमक्लास = "फ़ॉरवर्डअरो" कस्टममोडुले = "मेनटार्गनेम नेमशेयर" के रूप में समाप्त हो गया

जब मैंने बिल्ड में उन्हें मुख्य लक्ष्य से हटा दिया तो स्टोरी बोर्ड ने MainTargetNameWasHere को CustomViews में अपडेट नहीं किया जो कि वह फ्रेमवर्क है जहां वह स्थित था और यह देना शुरू कर दिया कि किसी भी वर्ग को त्रुटि नहीं मिली।

तो TLDR; सुनिश्चित करें कि यदि आपका IBDesignable किसी अन्य फ्रेमवर्क में है, तो आपके स्टोरी बोर्ड में customModule xml विशेषता सही मान पर सेट है। और अगर यह वहाँ नहीं है तो इसे जोड़ें।

मेरे स्रोत से उदाहरण:

<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MUG-jc-2Ml" customClass="ForwardArrow" customModule="CustomViews">

1
पवित्र बकवास, यह मुझे एक दिन के लिए पागल कर रहा है। क्या एक बुरा सा बग।
18

5

मेरे उदाहरण के रूप में, मैं फली के माध्यम से चेकबॉक्सबटन का उपयोग कर रहा था और चेकबॉक्स के ग्राफिक्स स्टोरीबोर्ड में कभी नहीं दिखाते हैं जबकि मुझे यहां प्रश्न में वर्णित समान मुद्दे मिले हैं:

चेतावनी: आईबी डिज़ाइबल्स: कस्टम क्लास के साथ ऑब्जेक्ट के लिए क्लास यूइवीवाई का उपयोग करना क्योंकि क्लास चेकबॉक्सबटन मौजूद नहीं है

तथा

चेतावनी: आईबी डिज़ाइबल्स: "UIVIV" के उदाहरण पर उपयोगकर्ता को रनटाइम एट्रिब्यूट को मुख्य पथ "चेककॉर" के लिए अनदेखा करना। अपना मान सेट करने का प्रयास करते समय एक अपवाद को मारें: [setValue: forUndefinedKey:]: यह वर्ग प्रमुख चेक कोडर के लिए महत्वपूर्ण मूल्य कोडिंग-अनुरूप नहीं है।

मेरी समस्या का हल करने का तरीका नीचे चेकबॉक्सबटन के साथ मॉड्यूल की आपूर्ति करना था :

ध्यान दें: आपको चेकबॉक्सबटन को प्रतिस्थापित करना चाहिए जो भी आपके द्वारा उपयोग किए जा रहे मॉड्यूल का नाम है।


4

मैंने व्यक्तिगत रूप से अपने पहचान निरीक्षक से सामग्री को हटाने के लिए "-" बटन का उपयोग करके इस समस्या को हल किया है। जब आप कस्टम क्लासेस को हटाते हैं, तो IB में कंटेंट को बदल देते हैं और फिर एक नई कस्टम क्लास जोड़ते हैं, पहचान निरीक्षक में डिज़ाइन किए गए तत्व हटाए नहीं जाते हैं और इससे मुझे वह त्रुटि हुई है। बस सब कुछ हटा दें और पुनर्निर्माण करें।यहां छवि विवरण दर्ज करें


आपने जैसा कहा, मैंने वैसा ही किया और इससे मेरी समस्या हल हो गई। पिछले सभी समाधानों का खुलासा यहां नहीं हुआ। बहुत बहुत धन्यवाद। ; ओ)
XLE_22

@ XLE_22 कभी-कभी इसका उत्तर होता है कि कोई भी इसे देखता नहीं है, एह? :)
हन्नाहर्नी

मेरे पास एक मुद्दा था, जहां मैंने अपने कुछ xib पर एक IBInspectable संपत्ति का नाम बदला। ऐसा करने के बाद मेरे पास एक टन चेतावनी थी कि मुझे सूचित करना चाहिए कि XCode को अब नामांकित संपत्ति नहीं मिल सकती है। पहचान निरीक्षक से संपत्ति को हटाकर मेरा मुद्दा तय किया।
WBuck

1

मुझे पता है कि यह उत्तर दिया गया है, लेकिन यहां एक और अनुभव है।

मुझे इस समस्या से कोई समस्या नहीं थी, लेकिन इस प्रक्रिया में मैंने अपनी कक्षा के vars से @IBInspectable को हटा दिया और पहचान निरीक्षक (alt-apple-3) से विशेषताओं को हटा दिया।

घटक के साथ (कोड) समस्या को ठीक करने के बाद, मैंने एक टन में सब कुछ ताज़ा कर दिया, लेकिन अभी भी पहचान निरीक्षक में कोई विशेषता नहीं है।

आखिरकार, मैंने देखा कि वे वापस आ गए थे, लेकिन केवल इंस्पेक्टर इंस्पेक्टर (alt-apple-4) में । जैसे ही मैंने उनके साथ वहाँ के मूल्यों को जोड़ा, वे पुनः पहचान निरीक्षक के रूप में सामने आए


1

डेव थॉमस के ऊपर दिए गए जवाब ने मुझे (उल्टा) समाधान दिया जब दूसरों का नहीं (व्युत्पन्न डेटा, संपादक> ताज़ा) किया, लेकिन मामले में स्पष्टता के लिए लोग यह सुनिश्चित नहीं कर रहे हैं कि XML को कहाँ संपादित किया जाए ... आप डॉन ' टी की जरूरत!

  1. अपनी स्टोरीबोर्ड फ़ाइल में परेशानी वाला दृश्य चुनें
  2. दाहिने हाथ के साइडबार पर आइडेंटिटी इंस्पेक्टर टैब (बाईं ओर से 3 विकल्प) का चयन करें।
  3. आपके पास अपना कस्टम वर्ग होगा, जिसे पहले से ही सेट किया जाना चाहिए, और Module। मेरे लिए यह खाली था, और मुझे ओपी के समान त्रुटियां हो रही थीं। मैंने Moduleअपने प्रोजेक्ट का नाम और BAM सेट किया - यह पुनर्निर्माण के बाद काम करना शुरू कर दिया!

0

मैं बस इस समस्या पर घंटी के माध्यम से चला गया। मैंने यहां और अन्य सभी चीजों को बिना किसी भाग्य के सूचीबद्ध करने की कोशिश की। यह एक स्टोरीबोर्ड है जिसने हमेशा के लिए ठीक काम किया और इसने अचानक "उपयोगकर्ता-परिभाषित रनटाइम विशेषता ..." समस्या को अनदेखा करना बंद कर दिया।

जो भी कारण हो, इस कोड को मेरे किसी IBDesignable द्वारा निर्धारित करने से हटाना:

-(void)viewDidLoad {
    self.clipsToBounds = YES;
}

इसे हटाने से सभी चेतावनी दूर हो गई, यहां तक ​​कि अन्य IBDesignable वस्तुओं में भी। मुझे नहीं पता कि यह एक कदम क्यों तय किया गया, लेकिन शायद यह किसी और की भी मदद करेगा।


3
आपको यहाँ पर कॉल करने की याद आ रही है
रोलांडसआर

0

मुझे भी यही समस्या हो रही थी और मुझे कॉर्नररेडियस और बॉर्डरविद को एक स्ट्रिंग में बदलना पड़ा और फिर सीजीफ्लोट में डाल दिया, यह मेरे लिए एकमात्र उपाय था कि मैं मानों को बदल सकूं और इंटरफेस कीडर में बदलाव देख सकूं।

@IBInspectable var borderColor: UIColor? {
    didSet {
        layer.borderColor = borderColor!.CGColor
    }
}

@IBInspectable var borderWidth: String? {
    didSet {
        layer.borderWidth = CGFloat(Int(borderWidth!) ?? 0)
    }
}

@IBInspectable var cornerRadius: String? {
    didSet {
        layer.cornerRadius = CGFloat(Int(cornerRadius!) ?? 0)
        layer.masksToBounds = layer.cornerRadius > 0
    }
}

मुझे लगता है कि IBInspectable केवल कुछ प्रकार ही कर सकता है, इसलिए शायद आपको Floatइसके बजाय उपयोग करने CGFloatऔर डालने की आवश्यकता होगी
Fonix
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.