IB_DESIGNABLE, IBInspectable - ইন্টারফেস বিল্ডার আপডেট হয় না


91

আমার কাছে কোডের নিম্নলিখিত সেট রয়েছে:

কাস্টমভিউ

#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

কাস্টমভিউ.এম

#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

(সুইফ্ট রেফারেন্সের জন্য, এই সমস্যাটি সুইফ্ট কোড সহও ঘটছিল)

কাস্টমভিউ.সুইফ্ট

@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

এখানে চিত্র বর্ণনা লিখুন

এটি "ডিজাইনযোগ্য" সারি যুক্ত করে। এটি "আপডেটিং" এ আটকে গেছে এবং টুলটিপটি "টার্গেট বিল্ডিংয়ের জন্য অপেক্ষা করছে" বলে। এটি এই অবস্থা থেকে কখনই পরিবর্তন হয় না।

যখন আমি পরিদর্শন করা বৈশিষ্ট্যগুলিতে চলে যাই তখন আমি এই IBInspectableবৈশিষ্ট্যগুলি সেট করতে সক্ষম হয়েছি :

এখানে চিত্র বর্ণনা লিখুন

এবং একবার সেট হয়ে গেলে তারা "ব্যবহারকারীর সংজ্ঞায়িত রানটাইম বৈশিষ্ট্যগুলি" তে প্রদর্শিত হবে:

এখানে চিত্র বর্ণনা লিখুন

যাইহোক, "ডিজাইনযোগ্য" স্থিতিটি এখনও একই সরঞ্জামদণ্ডের সাথে "আপডেটিং" এর বাইরে চলে না (আমি বেশ কয়েকবার সিএমডি + বি বিল্ডিং চেষ্টা করেছি, কিছুই পরিবর্তন হয়নি)।

তদুপরি, আমি IBInspectableবৈশিষ্ট্যগুলি সেট করার সাথে সাথে আমি প্রত্যেকের জন্য একটি সতর্কতা পাই

আইবিডিজিনেবলস - "ইউআইভিউ" এর উদাহরণ হিসাবে "বর্ডার কালার" কী পথটির জন্য ব্যবহারকারী নির্ধারিত রানটাইম বৈশিষ্ট্যটিকে উপেক্ষা করে ... এই শ্রেণিটি মূল সীমানার রঙের কোডের জন্য মূল-মান কোডিং-সম্মতিযুক্ত নয়।

উত্পন্ন সতর্কতার স্ক্রিনশট:

এখানে চিত্র বর্ণনা লিখুন


আমি মূল-মান কোডিং-অনুবর্তী সমস্যাগুলির সাথে পরিচিত এবং সাধারণত তাদের কীভাবে সমাধান করতে হয় তা আমি জানি ... তবে কীভাবে এই সমস্যাটি এখানে সমাধান করা যায় তা আমি বুঝতে পারি না। ভিউটির পরিচয় পরিদর্শক অনুসারে, ভিউটি একটি "কাস্টমভিউ" (নিয়মিত "ইউআইভিউ" নয়, যার মধ্যে এই বৈশিষ্ট্যগুলি নেই)। এবং যদি ভিউটি "কাস্টমভিউ" না হয় তবে এই নকশাযোগ্য বৈশিষ্ট্যগুলি অ্যাট্রিবিউটস ইন্সপেক্টরটিতে প্রদর্শিত হবে না, তাই না? কিন্তু যখন ইন্টারফেস বিল্ডার এই বৈশিষ্ট্যগুলিকে দর্শনে প্রয়োগ করার চেষ্টা করেন, তখন দর্শকের শ্রেণিটি "ইউআইভিউ" হয় এবং এই বৈশিষ্ট্যগুলি প্রয়োগ করতে পারে না তা ভেবে ফিরে যায়।

কোন সাহায্য? আমি কিছু গুরুত্বপূর্ণ বিবরণ রেখে গেছি কিনা দয়া করে আমাকে জানান, তবে এটির মূল্য কী, আমি এই টিউটোরিয়ালটি ঠিক অনুসরণ করেছি (ওবিজিস বনাম সুইফট ব্যতীত)। এটিও লক্ষণীয় যে আমি এই টিউটোরিয়ালটি ঠিক অন্য একটি মেশিনে অনুসরণ করেছি এবং এটি একটি কবজির মতো কাজ করেছে (আমি গত রাতে এই পোস্টটি তৈরি করার ইচ্ছা নিয়েছিলাম তবে আমি যে কম্পিউটারে ছিলাম তখন এই সমস্যাটি ছিল না)।


মন্তব্যের ভিত্তিতে, এটি প্রস্তাবিত হয়েছে যে সম্ভবত .mফাইলটি অন্তর্ভুক্ত করা হয়নি এবং এটি সমস্যার কারণ হতে পারে। আমি ভেবেছিলাম অবশ্যই এই দৃশ্যটি হওয়ার জন্য আমি আমার পথ থেকে দূরে চলে যাব, তবে আমি যাইহোক পরীক্ষা করেছি।

এখানে চিত্র বর্ণনা লিখুন

যখন আমি প্রথম এটি করার চেষ্টা শুরু করি তখন আমি বুঝতে পেরেছিলাম যে IB_DESIGNABLEক্লাসগুলি একটি আলাদা UIKitকাঠামোর অংশ হতে হয়েছিল । সুতরাং এই প্রথম স্ক্রিনশট থেকে আপনি দেখতে পাচ্ছেন যে আমি একটি "কাস্টমভিউস" ফ্রেমওয়ার্ক সেটআপ করেছি, যার একটি শ্রেণি রয়েছে CustomView,। আপনি এখানে দেখতে পাবেন যে আমি একটিও তৈরি করেছি OtherView, যা এর অনুরূপCustomView একটি আলাদা কাঠামোতে না বাদেউভয় শ্রেণির মধ্যে স্টোরিবোর্ডে অভিন্ন সমস্যাটি স্থির রয়েছে।

এখানে আমাদের একটি স্ক্রিনশট রয়েছে যা ইঙ্গিত করে যে ফ্রেমওয়ার্কটি CustomView.mদিয়ে নির্মিত হবে CustomViews:

এখানে চিত্র বর্ণনা লিখুন

এদিকে, নিম্নলিখিত স্ক্রিনশটটি বেশ কয়েকটি বিষয় নির্দেশ করে:

  • CustomViews.framework যথাযথভাবে মূল প্রকল্পের অন্তর্ভুক্ত।
  • OtherView.mএকটি সংকলন উত্স হিসাবে অন্তর্ভুক্ত করা হয়েছে, তাই কিছু ভুল হলেও CustomView,OtherView কাজ করা উচিত, যদিও তা অভিন্ন ত্রুটি জেনারেট করে।
  • Main.storyboardএবং LaunchScreen.xibলাল হিসাবে প্রদর্শিত হচ্ছে। আমি বুঝতে পারি না কেন, এবং কেন LaunchScreen.xibহওয়া উচিত তা সম্পর্কে আমি সামান্যতম ধারণাও পাইনি (যদিও আমি এই ফাইলটি স্পর্শ করি নি), যদিও আমি অন্যান্য প্রকল্পগুলি দেখার পরে বলতে পারি, Main.storyboardসেই প্রকল্পগুলির জন্যও লাল দেখায়, এবং আমি সাথে IB_DESIGNABLEবা IBInspectableসেখানে কিছুই করছেন না ।

এখানে চিত্র বর্ণনা লিখুন


আমি এখন বেশ কয়েকবার চেষ্টা করেছি এবং আবার চেষ্টা করেছি। এটি ঘরে বসে আমার কম্পিউটারে প্রতিটি সময় কাজ করে - আমি বাড়িতে এই প্রশ্নটিতে বর্ণিত সমস্যাটি পুনরুত্পাদন করতে পারি না। কর্মক্ষেত্রে, এটি কখনও কাজ করে না। এই প্রশ্নের বর্ণিত সমস্যাটি প্রতিবারই ঘটে।

উভয় কম্পিউটারই হ'ল ম্যাক মিনিস এই বছর নতুন কিনেছে (নতুন মডেল নয়, দেরী ২০১২ মডেল)। উভয় কম্পিউটারই ওএস এক্স ইয়োসেমাইট 10.10 চলছে। উভয় কম্পিউটারেই এক্সকোড সংস্করণ 6.1 চলছে। বাড়িতে, বিল্ডটি (6A1052 ডি)। আজ সকালে, আমি নিশ্চিত করতে পারি যে উভয় কম্পিউটারই এক্সকোডের অভিন্ন বিল্ডগুলি চালাচ্ছে।

অন্যরা আমাকে পরামর্শ দিয়েছে এটি খারাপ র্যাম হতে পারে। এটা আমার কাছে অনেকটা মনে হয়েছে। আমি প্রকল্পটি একাধিকবার পুনরায় চালু করেছি, একাধিকবার কম্পিউটার পুনরায় চালু করেছি। আমার কাছে মনে হয় যদি প্রায় 6 মাস বয়সী কম্পিউটারে খারাপ র‌্যাম থাকে তবে আমি অন্যান্য সমস্যাগুলি দেখছিলাম এবং এই সমস্যাটি কম সামঞ্জস্যপূর্ণ হবে। তবে কম্পিউটারে স্ক্র্যাচ থেকে পুরো প্রকল্পটি পুনরায় আরম্ভ করার পরে অসংখ্যবার পুনরায় চালু করা সত্ত্বেও এই সঠিক সমস্যাটি থেকেই যায়।


এটি লক্ষণীয় হওয়া উচিত যে আমি যদি এই প্রকল্পটি সত্যই সংকলন ও পরিচালনা করি তবে কাস্টম ভিউটি দিয়ে with IBInspectable করি তবে স্টোরিবোর্ডটি এটি প্রদর্শিত হবে বলে প্রত্যাশাগুলির বাস্তবে প্রদর্শিত হয়। আমি ধারণা করি যে এমনকি এটির নির্দেশিকা IB_DESIGNABLEএবং IBInspectableনির্দেশাবলী সত্ত্বেও এটি হবে কারণ এটি ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য হিসাবে তৈরি করা হয়েছে।


ঠিক আছে, এটি একটি ধারণা ছিল। আমি লক্ষ্য থেকে কাস্টমভিউ.এমটিকে সরিয়েছি এবং অ্যাপ্লিকেশন চালানোর সময় অনুরূপ সতর্কতা পেয়েছি।
মার্টিন আর

এটি একটি আপাতদৃষ্টিতে অভিন্ন মেশিনের (যা কোনওরকম পৃথক হয়) সাথে আপনার তুলনা দেওয়া সত্যিকারের গ্রিমলিনের মতো বলে মনে হয়। আপনি কি ডেভফোরামগুলিতে পোস্ট করার চেষ্টা করেছেন? দেখে মনে হচ্ছে আপনি অতিরিক্ত তথ্য ছাড়াই অন্ধ উড়ে বেড়াচ্ছেন এবং আপনার প্রক্রিয়াটি যুক্তিযুক্ত এবং যুক্তিযুক্ত বলে মনে হচ্ছে। এক্সকোড বিভ্রান্তিকর ত্রুটি বার্তাগুলি সহ প্রচ্ছন্ন হওয়ায় "বিল্ড" সতর্কতার অর্থ খুব বেশি নাও হতে পারে। কিক্সের জন্য, আপনি সম্পাদক -> "ডিবাগ নির্বাচিত ভিউ" চেষ্টা করেছেন, তাই না? (সম্ভবত কাজ করবে না, তবে স্যানিটি পরীক্ষা করা উচিত)। এছাড়াও, (লগিং) কনসোল অ্যাপ্লিকেশনটিতে কি কিছু প্রদর্শিত হবে?
ক্রিস কনভারটি

একই সমস্যা হচ্ছে। IB_DESIGNABLE সমেত একক xib ফাইলযুক্ত খনি। তবে আমার সেটআপটি যাচাই করে নিচ্ছি, আমি ইতিমধ্যে স্বয়ংক্রিয়ভাবে রিফ্রেশ করছি এবং আমি এখন ম্যানুয়াল রিফ্রেশ চেষ্টা করেছি, প্রাপ্ত তথ্যের প্রথমে সাফ করা ইত্যাদি far এখন পর্যন্ত কোনও কিছুই কার্যকর হয়নি। আশ্চর্যের বিষয় হ'ল আমার এই নিয়ন্ত্রণটি ঠিকঠাকভাবে কাজ করেছিল, তখন এটি বন্ধ হয়ে যায়। এবং আমি মনে করি না যে আমি এর মধ্যে কোনও কোড পরিবর্তন করেছি। পাগল।
ড্রেক্কা

উপরোক্ত হিসাবে সতর্কতা দেখাচ্ছে মূল আইবি ডিজাইনেবল থেকে কোড অনুলিপি করে এখন একটি দ্বিতীয় শ্রেণি তৈরি করেছে। এই শ্রেণিটি নিখুঁতভাবে কাজ করে এবং যখন আমি মূল অ-কর্মজীবী ​​শ্রেণিতে ফিরে যাই, এটি এখন দুর্দান্ত কাজ করে। এ থেকে আমি উপসংহারে এসেছি যে কোথাও কোথাও কিছু ক্যাশে রয়েছে (উত্পন্ন তথ্য নয়) যতক্ষণ না মূল আইবি ডিজাইনেবল অন্য আইবি ডিজাইনেবলের জন্য অদলবদল না হওয়া অবধি পরিষ্কার করা হয় না। কোনও ইউআইভিউতে পরিবর্তন করা এই ক্যাশেটি সাফ করে বলে মনে হচ্ছে না। কেবল অন্য আইবি ডিজাইনযোগ্য। চিত্র দেখুন :-)
ড্রেক্কা

উত্তর:


75

নির্বাচিত ভিউটি ডিবাগ করার জন্য ক্রিসকোর পরামর্শের ভিত্তিতে (যা আমি ইতিমধ্যে করেছি, তবে ভাল পরিমাপের জন্য আবার চেষ্টা করতে গিয়েছি), আমি সম্পাদক মেনুর নীচে কয়েকটি অপশন লক্ষ্য করেছি।

  • স্বয়ংক্রিয়ভাবে দৃশ্যগুলি রিফ্রেশ করুন
  • সমস্ত দর্শন রিফ্রেশ

আমি "সমস্ত দৃশ্য রিফ্রেশ করুন" ক্লিক করেছি এবং এক্সকোডের কিছুটা ভাবনার পরে হঠাৎ স্টোরিবোর্ডটি আমার প্রত্যাশাকে প্রত্যাশা হিসাবে প্রদর্শন করছে (সঠিকভাবে আমার IBInspectableসম্পত্তি প্রয়োগ করছে )।

এখানে চিত্র বর্ণনা লিখুন

আমি তখন পুরো প্রক্রিয়াটি পেরিয়ে আবার নিশ্চিত হয়েছি যে এটিই সমাধান।

আমি একটি নতুন ক্লাস তৈরি ThirdView,। এই শ্রেণিটি আবার অন্যদের কাছে অভিন্ন। আমি আমার দর্শনের ক্লাসে পরিবর্তন করেছি ThirdViewএবং এবার কিছুটা আলাদা পেয়েছি:

এখানে চিত্র বর্ণনা লিখুন

সতর্কতাগুলিতে আমার কাছে "শো" ক্লিক করা:

এখানে চিত্র বর্ণনা লিখুন

এবার একটি নতুন:

কাস্টম ক্লাসের সাথে অবজেক্টের জন্য ইউআইভিউ ক্লাস ব্যবহার করা হচ্ছে কারণ ক্লাস থার্ডভিউয়ের অস্তিত্ব নেই।

ইতিমধ্যে যা বিদ্যমান ছিল তার চেয়ে সত্যই এটি আর কোনও সহায়ক নয়। প্লাস, এখন অন্য তিনটি সতর্কতা আশ্চর্যজনকভাবে 6 এ দ্বিগুণ হয়ে গেছে।

যাইহোক, আমি যদি আবার সম্পাদকীয় ড্রপ ডাউন মেনু থেকে "সমস্ত দৃশ্য রিফ্রেশ" ক্লিক করি তবে সমস্ত ত্রুটিগুলি চলে যায় এবং আবারও, দৃশ্যটি সঠিকভাবে প্রদর্শিত হয়।

তবুও, এই মুহুর্ত পর্যন্ত, আমি যা কিছু করেছি তা জিনিস ছিল যা আমি বাড়িতে কখনই গণ্ডগোল করি না। বাড়িতে, এটি কাজ করে। সুতরাং আমি "স্বয়ংক্রিয়ভাবে রিফ্রেশ দর্শনগুলি" চালু করেছিলাম এবং পরীক্ষার জন্য একটি "চতুর্থ ভিউ" তৈরি করেছি - আবারও প্রথম তিনটির মতোই।

ভিউটির শ্রেণিটিকে "চতুর্থ দর্শনে" পরিবর্তন করার পরে ডিজাইনেবল লেবেল একটি অল্প মুহূর্তের জন্য "আপডেটিং" বলেছে এবং শেষ পর্যন্ত "আপ টু ডেট" বলেছিল:

এখানে চিত্র বর্ণনা লিখুন

তো, আমি ঘরে বসে আমার কম্পিউটার পরীক্ষা করেছিলাম। "স্বয়ংক্রিয়ভাবে রিফ্রেশ দর্শনগুলি" কম্পিউটারে চালু থাকে যা সর্বদা কাজ করে যাচ্ছিল। এটি যে কম্পিউটারে ছিল তা বন্ধ ছিল। আমি কখনও এই মেনু বিকল্পটি স্পর্শ মনে করি না। এক্সকোড before এর পূর্বে এটির অস্তিত্ব ছিল কিনা তা আমি আপনাকে নিশ্চিত করে বলতে পারি না তবে এই বিকল্পটি পার্থক্য তৈরি করছিল।


টিএল; ডিআর, যদি আপনার প্রশ্নের একই বর্ণনায় একই সমস্যা হয় তবে নিশ্চিত হয়ে নিন যে "স্বয়ংক্রিয়ভাবে রিফ্রেশ দর্শনগুলি" চালু হয়েছে (বা আইবিতে আপডেটের প্রয়োজন হলে ম্যানুয়ালি "সমস্ত দৃশ্য রিফ্রেশ করুন"):

এখানে চিত্র বর্ণনা লিখুন


4
পুরানো ম্যাকবুকগুলি ব্যাকগ্রাউন্ডে রেন্ডারিং রাখার সাথে সাথে এটি কীভাবে বন্ধ করা যায় তা আমি আসলেই খুঁজছিলাম। ধন্যবাদ!
Departamento বি

এটি অস্থায়ী সমাধান করতে পারে তবে @ মার্টিন-গিলস লাভোইয়ের উত্তরটি দেখুন
অ্যাশলে মিলস

22

আমার আরও কয়েকটি বিশদ রয়েছে যা আপনার আইবি ডিজাইনযোগ্য ক্লাসগুলি লোড না করার কারণ হতে পারে।

আপনার সমস্যাযুক্ত স্টোরিবোর্ড / এক্সিব নির্বাচন করুন যেখানে আপনার কাস্টম দর্শনগুলি প্রদর্শন করা উচিত।

নেভিগেটর অঞ্চলে, আপনার এক্সকোড কর্মক্ষেত্র / প্রকল্পে রিপোর্ট নেভিগেটরের দিকে যান।

এক্সকোডের সম্পাদক মেনুতে, (এনএইচজিরিফ দ্বারা উল্লিখিত) হিট করুন, "সমস্ত দেখুন রিফ্রেশ করুন" বিকল্পটি। এটি আইবি আপনাকে পুরোপুরি স্টাফের জন্য একটি সংকলন চালু করবে যা আপনি নিশ্চিত, আপনি আশা করেন না।

প্রতিবেদনের নেভিগেটরে, সামগ্রী ফিল্টার করতে "বাই গ্রুপ" ক্লিক করুন এবং "ইন্টারফেস বিল্ডার" বিভাগটি দেখুন। আপনি দেখতে পাবেন যে কাস্টম IBDesignable দর্শন ফ্রেমওয়ার্ক লোড করার স্বার্থে এটি প্রচুর পরিমাণে সংকলন করবে। যদি কোন এই লক্ষ্যমাত্রা কম্পাইল না, যেমন (সম্ভবত অসমর্থিত) ইউনিট পরীক্ষা লক্ষ্যমাত্রা, তারপর আইবি আপনার Dll লোড এ ব্যর্থ হবে (এমনকি যদি তারা পুরোপুরি কোডে সম্পর্কহীন যে লোড এই দেখ বা স্টোরিবোর্ড হয়)।

আমার ক্ষেত্রে, আইবি 8 টি টার্গেট সংকলনের চেষ্টা করেছিল, 4 টি সহ যেখানে আমরা ইউনিট টেস্টগুলি আপডেট করেছি যা সাম্প্রতিক রিফ্যাক্টরিং পরিবর্তনের পরে আমরা কাজ করছি।

আইবি আমার কাস্টমস ভিউগুলি যথাযথভাবে লোড করতে এবং প্রদর্শন করতে যেখানে এই ক্লাসগুলির সাথে সম্পর্কিত বা এমনকি লিঙ্কযুক্ত নয়, বা ইউনিট পরীক্ষা চালানোর সময়ে স্টোরিবোর্ডটি লোড করে না সেগুলির বেশিরভাগ কোড পরিবর্তন / সংশোধন করে। তবুও, আইবিটির কাজ করার জন্য পুরো ওয়ার্কস্পেস সংকলনের উপর নির্ভরতা ছিল।


আরে, সুতরাং আমি এই ক্লাসগুলির সাথে সম্পর্কিত বা লিঙ্কযুক্ত নয় এমন ভিউ লোড করার এবং প্রদর্শন করার চেষ্টা থেকে আইবিকে কীভাবে থামাব?
হান্না কার্নি

আমি ধরে নিচ্ছি এটির শিরোনাম নির্ভরতাগুলির সাথে সম্পর্কযুক্ত। ডিজাইনেবল ক্লাসগুলি যতই অন্যান্য ক্লাসগুলিকে স্পর্শ করছে ততক্ষণ, শিরোনামটি যে মুহুর্তে দেখা যাবে এটি সেইগুলি সম্পর্কিত বাস্তবায়নগুলি তৈরি করবে। অ্যাপল XC7GM- এ উত্স নির্ভরতা গ্রাফ কোডটি নিয়ে কাজ করছে যা গ্রাফটি তৈরি করার সময় এক্সকোড ক্র্যাশ হয়ে আমাদের প্রকল্পে পুরোপুরি ব্যর্থ হয়। নিম্নলিখিত 7.1 বেটাস সমস্যাটি প্রদর্শন করবেন না। আমাদের অটোমেটেড বিল্ড সিস্টেমটি এখনও এই মুহুর্তের জন্য 6.4 এর উপর নির্ভরশীল তাই XC6.4 এর অধীনে কীভাবে এটি আরও সমাধান করা যায় তা আমরা তদন্ত করে দেখিনি। আমরা সরাসরি 7.1GM এ ঝাঁপিয়ে যাব।
মার্টিন-গিলস লাভোয়ি

আপনি যদি একাধিক লক্ষ্য / প্রকল্প পেয়ে থাকেন তবে এটি একেবারে সঠিক উত্তর এবং সমস্যাটি সত্যিই সমাধান করতে পারে - সমস্ত লক্ষ্যগুলি অবশ্যই পরিষ্কারভাবে তৈরি করতে হবে, আমি এমনকি জানতাম না যে রিপোর্ট নেভিগেটরে একটি "ইন্টারফেস বিল্ডার" বিভাগ রয়েছে! অন্যান্য যে সমস্ত উত্তর আমি দেখেছি সেগুলি মূলত অনেকগুলি হাত জোয়ার যা এটি সাময়িকভাবে সংশোধন করতে পারে তবে এটিই এর চূড়ান্ত সমাধান। সাবাশ.
অ্যাশলে মিলস

4
সুতরাং, এই অনুসারে, আমরা উপসংহারে পৌঁছাতে পারি যে IB_DESIGNABLE গুণাবলী মোটামুটি বিষ্ঠা এবং সময়ের অপচয় waste শুধু এটি ব্যবহার এড়ানো।
m8labs

উপরে তালিকাভুক্ত ইস্যু এবং সমাধানের সাথে আইবি_ডিজিইনবলির কোনও সম্পর্ক নেই। ব্যবহারযোগ্য জিনিসগুলি সনাক্ত করার জন্য এটি কেবল একটি NO-OP পতাকা। আপনার কেবল একটি পরিষ্কার ঘর বজায় রাখা দরকার।
মার্টিন-গিলস লাভোয়ে

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 .. যদিও আমি নিশ্চিত যে আমি আমার কাস্টম আইবিডিজাইনেবল ভিউ ক্লাসে কোনও ভুল করি নি।

দেখা গেল, আমার ক্ষেত্রে এটি এক্সকোড ক্যাশে নিয়ে গেছে।

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

সাফ করুন DerivedDataএবং সতর্কতা চলে গেল।


4
একই ফলাফল অর্জনের জন্য এক্সকোডে শর্টকাট: ⌘⇧K
মজো 66

@ মোজো 6666 আমি বিশ্বাস করি যে ক্লিন বিল্ড ডেরিভেডডাটা ফোল্ডারটি পরিষ্কার করার থেকে আলাদা। অবশ্যই, কিছু সময় এক্সকোড ক্যাশে সমস্যা সমাধানের জন্য ক্লিন বিল্ড যথেষ্ট ভাল
6:55 এ সাম্যাইজ করুন

@ মোজো66 আপনি সম্ভবত ⌘⌥⇧K (সেন্টিমিটার + ওল্ট + শিফট + কে)
বোঝাতে চেয়েছিলেন

5

অন্য যে কোনও একটি ত্রুটি আইবির ডিজাইনেবল ক্লাসের অস্তিত্বের বিরুদ্ধে আসে না, একই কারণে আমি করেছি। শীর্ষ উত্তর আমার সমস্যা ছিল না ... তবে এখানে কিছুটা সম্পর্কিত সমস্যা ...

কাস্টমমডুল নামে স্টোরি বোর্ড উত্স কোডে একটি সম্পত্তি লুকানো আছে।

উদাহরণস্বরূপ আমার একটি আলাদা কাঠামোর ভিতরে ফরওয়ার্ড অ্যারো নামে একটি শ্রেণি ছিল যা আমি ঘটনাক্রমে আমার মূল লক্ষ্যটিতে যুক্ত করেছি।

সুতরাং কিছু দর্শনের জন্য এক্সএমএলটি কাস্টমক্লাস = "ফরোয়ার্ড অ্যারো" কাস্টমমডিউল = "মেইন টার্গেটনামওয়াসেহেরা" হিসাবে শেষ হয়েছে

আমি যখন তাদের বিল্ডিংয়ের মূল লক্ষ্য থেকে সরিয়েছি স্টোরি বোর্ড কাস্টমভিউতে মেইনট্রেজেটনেমওয়াসের আপডেট করেনি যা এটি অবস্থিত ফ্রেমওয়ার্কটি এবং কোনও শ্রেণীর ত্রুটি পাওয়া যায়নি তা দেওয়া শুরু করে।

তাই টিএলডিআর; আপনার আইবি ডিজাইনযোগ্য যদি অন্য কাঠামোর মধ্যে থাকে তবে আপনার স্টোরি বোর্ডের কাস্টমমডুল এক্সএমএল বৈশিষ্ট্যটি সঠিক মানকে সেট করা আছে কিনা তা নিশ্চিত করুন। এবং যদি এটি সেখানে না থাকে তবে এটি যুক্ত করুন।

আমার উত্স থেকে উদাহরণ:

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

4
পবিত্র বোকা, এটি একদিনের জন্য আমাকে বাদাম চালাচ্ছে। কি কদর্য ছোট বাগ।
গোল্ডেনজয়ে

5

আমার উদাহরণ হিসাবে, আমি পডের মাধ্যমে চেকবক্সবাটনটি ব্যবহার করছিলাম এবং চেকবক্সের গ্রাফিকগুলি স্টোরিবোর্ডে কখনই প্রদর্শিত হবে না যখন আমি এখানে প্রশ্নে বর্ণিত একই সমস্যা পেয়েছি:

সতর্কতা: আইবি ডিজাইনেবল: কাস্টম ক্লাসের সাথে অবজেক্টের জন্য ক্লাস ইউআইভিউউ ব্যবহার করা হচ্ছে কারণ চেকবক্সবটনের ক্লাসটি নেই

এবং

সতর্কতা: আইবি ডিজাইনেবলগুলি: "ইউআইভিউ" এর উদাহরণ হিসাবে "চেক কালার" কী পাথটির জন্য ব্যবহারকারী সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য উপেক্ষা করে। এর মান সেট করার চেষ্টা করার সময় একটি ব্যতিক্রম হিট করুন: [setValue: forUndefinedKey:]: এই বর্গটি কী চেক কালারের জন্য মূল মান কোডিং-অনুসারী নয়।

আমার সমস্যার সমাধানের উপায়টি ছিল নীচে চেকবক্সবাটন নামের মডিউলটি সরবরাহ করা :

দ্রষ্টব্য: আপনি যে মডিউলের নাম ব্যবহার করছেন তা যাচাই করা উচিত আপনার চেকবক্সবাটন প্রতিস্থাপন করা উচিত ।


4

আমি আমার পরিচয় পরিদর্শক থেকে সামগ্রী মুছতে "-" বোতামটি ব্যবহার করে ব্যক্তিগতভাবে এই সমস্যাটি সমাধান করেছি। আপনি যখন কাস্টম ক্লাসগুলি সরিয়ে ফেলেন, আইবিতে সামগ্রী পরিবর্তন করুন এবং তারপরে একটি নতুন কাস্টম ক্লাস যুক্ত করুন, সনাক্তকরণ পরিদর্শকটিতে নকশাযোগ্য উপাদানগুলি সরানো হবে না এবং এটি আমার ত্রুটি ঘটায়। কেবল সবকিছু মুছুন এবং পুনর্নির্মাণ করুন।এখানে চিত্র বর্ণনা লিখুন


আপনি যা বলেছেন ঠিক তেমনই করেছি এবং এটি আমার সমস্যার সমাধান করেছে। এখানে প্রকাশিত সমস্ত পূর্ববর্তী সমাধানগুলি এটি তৈরি করে নি। অনেক ধন্যবাদ. ; ও)
XLE_22

@ XLE_22 কখনও কখনও উত্তরগুলি হ'ল যে কেউ সমাধান করে না, হ্যাঁ? :)
হান্না কার্নি

আমার একটি সমস্যা ছিল যেখানে আমি আমার কয়েকজন এক্সবিতে আইবিআইস্পেসটেবল সম্পত্তিটির নামকরণ করেছি। এটি করার পরে আমার কাছে এক টন সতর্কতা ছিল যে এক্সকোড এখন নাম পরিবর্তন করা সম্পত্তিটি খুঁজে পাচ্ছে না। পরিচয় পরিদর্শকের কাছ থেকে সম্পত্তি সরিয়ে আমার সমস্যাটি স্থির করে।
ডাব্লুবুক

1

আমি জানি এটির উত্তর দেওয়া হয়েছে, তবে এখানে আরও একটি অভিজ্ঞতা is

আমি এই সমস্যাটির সাথে সম্পর্কিত কিছু সমস্যা ছিল, কিন্তু প্রক্রিয়াটিতে আমি @IBInspectable কে আমার ক্লাসের vars থেকে অপসারণ করেছি এবং পরিচয় পরিদর্শক (Alt-Apple-3) থেকে বৈশিষ্ট্যগুলি মুছে ফেলেছি।

উপাদানটির সাথে (কোড) সমস্যাটি সমাধান করার পরে, আমি কয়েক টন বার সবকিছু রিফ্রেশ করেছি, তবে এখনও পরিচয় পরিদর্শকের কোনও বৈশিষ্ট্য নেই।

অবশেষে, আমি লক্ষ্য করেছি যে তারা ফিরে এসেছিল তবে কেবল বৈশিষ্ট্য পরিদর্শক (Alt-Apple-4) । সেখানে আমি তাদের সাথে মান যুক্ত করার সাথে সাথে তারা পরিচয় পরিদর্শকের কাছে পুনরায় হাজির হয়েছিল


1

উপরের ডেভ থমাসের উত্তর আমাকে (বিপরীত) সমাধানটি দিয়েছে যখন অন্যদের থেকে নয় (উত্পন্ন তথ্য, সম্পাদক> রিফ্রেশ) করেন তবে স্পষ্টতার জন্য লোকেরা কোথায় এক্সএমএল সম্পাদনা করবেন তা নিশ্চিত নয় ... আপনি ডোন না ' দরকার নেই!

  1. আপনার স্টোরিবোর্ড ফাইলটিতে ঝামেলা ভিউ নির্বাচন করুন
  2. ডানদিকে সাইডবারে পরিচয় পরিদর্শক ট্যাবটি নির্বাচন করুন (বাম দিক থেকে 3 য় বিকল্প)।
  3. আপনার নিজস্ব কাস্টম ক্লাস হবে, যা ইতিমধ্যে সেট করা উচিত, এবং Module। আমার জন্য এটি খালি ছিল, এবং আমি ওপি হিসাবে একই ত্রুটি পাচ্ছিলাম। আমি Moduleআমার প্রকল্পের নাম এবং বিএএম সেট করেছিলাম - এটি পুনর্নির্মাণের পরে কাজ শুরু করে!

0

আমি এই সমস্যাটি নিয়ে কেবল রিঞ্জার দিয়েছিলাম। আমি এখানে এবং অন্য কোথাও তালিকাভুক্ত সমস্ত জিনিস কোনও ভাগ্য ছাড়াই চেষ্টা করেছি। এটি একটি স্টোরিবোর্ড যা চিরকালের জন্য সূক্ষ্মভাবে কাজ করে এবং এটি হঠাৎ "ব্যবহারকারী-সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য উপেক্ষা ..." সমস্যার সাথে কাজ করা বন্ধ করে দেয়।

যে কোনও কারণেই হোক না কেন, আমার আইবি ডিজাইনেবলের একটি থেকে এই কোডটি সরিয়ে ফেলা এটি ঠিক করেছে:

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

এটি অপসারণের ফলে সমস্ত সতর্কতা দূরে চলে গেল, এমনকি অন্যান্য আইবি ডিজাইনযোগ্য বস্তুতেও। এই এক ধাপটি কেন এটি স্থির করেছিল আমার কোনও ধারণা নেই তবে সম্ভবত এটি অন্য কাউকেও সহায়তা করবে।


4
আপনি এখানে নৈশভোজ কল অনুপস্থিত
RolandasR

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
    }
}

আমি মনে করি আইবিআই স্পেসটেবল কেবলমাত্র কিছু নির্দিষ্ট ধরণের কাজ করতে পারে তাই আপনার Floatপরিবর্তে এটি ব্যবহারের প্রয়োজন পড়ে এর পরিবর্তে CGFloatকাস্ট করতে হবে
ফোনিক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.