ইউআইটিএবলভিউসেল সাবক্লাসের সাথে "-আউটআউটসুভিউগুলি কার্যকর করার পরে স্বতঃ লেআউট এখনও প্রয়োজনীয়"


115

এক্সকোড 4.5 এবং আইওএস 6 ব্যবহার করে, আমি কাস্টম সেলগুলির সাথে একটি সাধারণ টেবিল ভিউ সহ একটি অ্যাপ্লিকেশন বিকাশ করছি। আমি এটি আইওএস 5 এবং এর নীচে একশবার করেছি, তবে কোনও কারণে নতুন অটোলআউট সিস্টেমটি আমাকে অনেক ঝামেলা দিচ্ছে।

আমি আমার টেবিল ভিউ এবং আইবিতে প্রোটোটাইপ সেল সেটআপ করি, সংক্ষিপ্তসার যুক্ত করেছি এবং সেগুলি আইবিআউটলেট হিসাবে সজ্জিত করে তারপরে আমার প্রতিনিধি এবং ডেটাসোর্স সেটআপ করি। তবে এখনই যখনই প্রথম সেলটি এনেছে cellForRowAtIndexPath, আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

*** দৃser়তা ব্যর্থতা - [শপসেল লেআউটসুব্লায়ারস অফলায়ার:], / সোর্সক্যাচি / ইউআইকিট_সিম / ইউআইকিট -২7272২ / ইউআইভিউ.এম:5:566

*** অপ্রত্যাশিত ব্যতিক্রম 'এনএসআইটার্নাল ইনসোনসিটিসিটি এক্সপেশন' এর কারণে অ্যাপ্লিকেশনটি সমাপ্ত করা হচ্ছে, কারণ: '-layoutSubviews কার্যকর করার পরে অটো লেআউট এখনও প্রয়োজন still শপসেল এর -layoutSubviews এর বাস্তবায়ন সুপার কল করা প্রয়োজন। '

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

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

সম্পাদনা: কেবলমাত্র এটি আইবিতে একটি ইউআইটিএবলভিউসকলে পরিবর্তন করার চেষ্টা করেছে এবং সমস্ত সংক্ষিপ্তসার ঠিক জায়গায় রেখে দিয়েছে, তবুও একই ত্রুটি।


lldb [[UIWindow keyWindow] _autoLayoutTrace]স্বয়ংক্রিয় বিন্যাস ব্যবহৃত হলে ডিবাগার অঞ্চলে চেষ্টা করুন ।
এ-লাইভ

3
আপনি কি ইউআইটিএবলভিউসেলের পরিবর্তে কাস্টম সেলের জন্য ইউআইভিউ ব্যবহার করছেন? আমারও একই সমস্যা ছিল। আমার কাস্টম সেলটির জন্য ইউআইভিউ ছিল এবং এটিতে সাব ভিউ যুক্ত করা হয়েছিল। ইউআইটিএবলভিউসেলতে পরিবর্তিত হয়েছে এবং এটি কার্যকর হয়েছে।

আরে মাইক, আউটলেটগুলি কীভাবে সংজ্ঞায়িত করছেন? শ্রেণি সম্প্রসারণে সেগুলি কি আপনার বাস্তবায়ন ফাইলের সম্পত্তি?
কোকোডেড

@ এ-লাইভ যখনই আমি সেই পদ্ধতিটি ব্যবহার করার চেষ্টা করি তখনই আমি ডিবাগারে ত্রুটি পাই .... এই পদ্ধতিটি কি এখনও বৈধ? সম্পাদনা: কিছুই নয়, এটি অটোলেআতে একটি ছোট হাতের এল।
বোর্ডার্ডেন

পরিদর্শকের মধ্যে অটোআলআউট বাক্সটি আনচেক করুন তারপর পরিষ্কার করুন এবং চালান। এটা surly কাজ করবে।
নিকো

উত্তর:


57

কোডটিতে ম্যানুয়ালি বাধা যুক্ত করার সময় আমি একই সমস্যার মুখোমুখি হয়েছি। কোডে, আমি নিম্নলিখিতগুলি করছিলাম:

{
    [self setTranslatesAutoresizingMaskIntoConstraints:YES];
    [self addSubview:someView];
    [self addSubview:someOtherView];
    [self addConstraint:...];
}

অনুমান

আমি যা বলতে পারি তা থেকে সমস্যাটি হ'ল আপনি যখন অক্ষম করবেন তখন translatesAutoresizingMaskIntoConstraintsইউআইটিএবলভিচেল অটো লেআউটটি ব্যবহার শুরু করে এবং স্বাভাবিকভাবে ব্যর্থ হয় কারণ এর অন্তর্নিহিত বাস্তবায়ন সুপারকে layoutSublayersForLayerকল করে না। হপার বা অন্য কোনও সরঞ্জামযুক্ত কেউ এটি নিশ্চিত করতে পারেন। যেহেতু আপনি আইবি ব্যবহার করছেন আপনি সম্ভবত ভাবছেন যে এটি কেন একটি সমস্যা ... এবং কারণ আইবি ব্যবহার করা স্বয়ংক্রিয়ভাবে translatesAutoresizingMaskIntoConstraintsএমন দৃষ্টিভঙ্গিগুলিকে অক্ষম করে যা এটিতে বাধা যুক্ত করে (এটি স্বয়ংক্রিয়ভাবে তাদের জায়গায় প্রস্থ এবং উচ্চতার সীমাবদ্ধতা যুক্ত করবে)।

সমাধান

আমার সমাধানটি ছিল সমস্ত কিছুতে সরানো contentView

{
   [self.contentView addSubview:someView];
   [self.contentView addSubview:someOtherView];
   [self.contentView addConstraint:...];
}

এটি ইন্টারফেস বিল্ডারে কাজ করবে কিনা আমি 100% নিশ্চিত নই, তবে আপনি যদি নিজের ঘর থেকে সমস্ত কিছু ধাক্কা দেন (ধরে নিলেন যে এটিতে আপনার সরাসরি কিছু আছে) তবে এটি কাজ করা উচিত। আশা করি এটি আপনাকে সাহায্য করবে!


4
আমি subview.translatesAutoresizingMaskIntoConstraints = NO'সামগ্রীর ভিউতে আমি যুক্ত প্রতিটি পর্যালোচনাতে যুক্ত করা দরকার।
জে পিয়ের

5
এটি আমার পক্ষে কাজ করেছে। এছাড়াও, নিশ্চিত করুন যে আপনি কি না কল self.contentView.translatesAutoresizingMaskIntoConstraints = NOজন্য UITableViewCell
মৌরিজিও

53

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

#import <objc/runtime.h>
#import <objc/message.h>

@implementation UITableViewCell (FixUITableViewCellAutolayoutIHope)

+ (void)load
{
    Method existing = class_getInstanceMethod(self, @selector(layoutSubviews));
    Method new = class_getInstanceMethod(self, @selector(_autolayout_replacementLayoutSubviews));

    method_exchangeImplementations(existing, new);
}

- (void)_autolayout_replacementLayoutSubviews
{
    [super layoutSubviews];
    [self _autolayout_replacementLayoutSubviews]; // not recursive due to method swizzling
    [super layoutSubviews];
}

@end

টেবিলের ঘরে একটি ব্যাকগ্রাউন্ডভিউ ব্যবহার করার সময় আমি যে সমস্যাটি দেখিয়েছি তা যুক্ত হতে পারে, যেহেতু এটি ঘরের জন্য একটি সংক্ষিপ্তসার হিসাবে যুক্ত হয় (যেখানে বেশিরভাগ সংক্ষিপ্তসারগুলি টেবিল ঘরের কনটেন্ট ভিউতে যুক্ত করা উচিত, যা সাধারণত আরও ভাল কাজ করা উচিত)।

দ্রষ্টব্য: এই বাগটি আইওএস 7-এ স্থির হয়েছে; আমি এই কোডটি সরাতে সক্ষম হয়েছিলাম, বা কমপক্ষে একটি রানটাইম চেক যোগ করতে সক্ষম হ'ল এটি কেবলমাত্র iOS6 এ চলাকালীন শেষ।


বিজোড় জিনিস যে এটা আমার জন্য একটি প্লেইন UITableViewCell সঙ্গে কাজ করে জরিমানা, শুধু একটি উপশ্রেণী জন্য নয় ...
borrrden

আপনি এটি ভাবেন, তবে আমার কাছে যা কিছু আছে তা একটি ইনডিম পদ্ধতি, অন্য কিছুই> <নয়। আমি আমার জীবনে লেআউটসুভিউগুলিকে কখনই ওভাররাইড করতে পারি নি। আমি মনে করি যে সমস্যাটি সেই কাস্টম ভিউ যা ইউআইটিএবলভিউসেল তার রুট ভিউ হিসাবে অটো লেআউট ব্যবহার করতে পারে না কারণ এটি লেআউটসুভিউগুলিকে ওভাররাইড করে (তাই আপনি যখন রুট
ভিউটিতে

6
UITableViewএকই কারণে আমাকে এই ধরণের বিভাগ তৈরি করতে হয়েছিল (আইওএস 6.1 বি 1)
জোশুয়া জে ম্যাককিনন

5
আইওএস 7 এ এখনও সমস্যাটি বিদ্যমান থাকায় কি টেবিলহিডারভিউয়ের জন্য একই ধরণের সমস্যা রয়েছে?
সফটলিয়ন

1
এটি দুর্দান্ত কাজ করে। আমি যখন কোনও ইউআইটিএবলভিউতে একটি ইউআইআইভিউ মতামতকে কেন্দ্র করে দেখার চেষ্টা করি তখন আমি এই সমস্যার মুখোমুখি হয়েছি। এমনকি আইওএস 7-এ দৃ as়তা পাওয়া যায়। তবে এটি আইওএস 8 এ ঘটে না, তাই তারা অবশ্যই বাগটি সম্বোধন করেছিল।
জর্দান এইচ

33

আমি কয়েক মাস ধরে একই বাগ ছিল। তবে কী সমস্যা ছিল তা আমি খুঁজে পেলাম।

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

আসলে, আপনি উচিত সবসময় এই আইটেমটি ব্যবহার কারণ সব subviews যোগ করা হয় contentViewএর UITableViewCell

এখানেই শেষ. আমরা সবাই ভাল থাকবো.


এটি গ্রহণযোগ্য উত্তর হওয়া উচিত নয় কারণ প্রশ্নটি আইবি ব্যবহার করে বাস্তবায়ন করার বিষয়ে নয় এবং আপনি যখন আইবি ব্যবহার করছেন না তখন এই সমস্যাটি ঘটতে পারে। আপনি যদি নিজের মতামত প্রোগ্রামক্রমে করে থাকেন তবে @ ফিল্লোডেনের উত্তরটি আরও কার্যকর।
এরিক 18

আমি উত্তর বুঝতে পারি না। কেউ আরও পরিষ্কারভাবে ব্যাখ্যা করতে পারেন? ধন্যবাদ
হাসান

আমি মনে করি আমার অধিকার আছে। এটা কি ক্লাস এট চেক করার জন্য যথেষ্ট? ইন্টারফেস বিল্ডারে পরিচয় পরিদর্শক? বা যেটি যোগ করা হয়েছিল তা ছিল অন্য ধরণের এবং শ্রেণীর অ্যাটাক। পরে আপডেট করা হয়েছে? এটিও সমস্যা সৃষ্টি করে?
হাসান

@ হাসান ৮ আপনি আসলে সেলটি ফিরে আসতে পারবেন। একটি ইউআইটিএবলভিউসেল মূলত একটি ইউইউভিউ যা পুনরায় ব্যবহারকারীর শনাক্তকারী।
Arnaud

17

কাস্টম UITableViewHeaderFooterView+ xib নিয়ে আমার একই সমস্যা হয়েছিল ।

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

-(void)layoutSubviews
{
    [super layoutSubviews];
    [self layoutIfNeeded]; // this line is key
}

1
সাবধান হন যে এর পরিণতি অবিরত
এমবিআই

15

আমি এটি আমার লেআউটসুভিউগুলি বাস্তবায়নের ক্ষেত্রে বাধা পরিবর্তনের ফলস্বরূপ দেখছিলাম। পদ্ধতির শুরু থেকে শেষের দিকে কলটিতে স্থানান্তর করা সমস্যার সমাধান করে।


এটি আমার পক্ষে কাজ করেছে। আমার একটি কাস্টম ইউআইকোলিকেশনভিউসেল রয়েছে যা আমি লেআউটসুভিউগুলিতে ফর্ম্যাট করছি। এই সমাধান যদিও কাজ করে যে কেউ জানেন?
স্টাংএমএমএক্স

@ স্টাংএমএমএক্স, এশা ডিকেন্সের উত্তর কেন তা ব্যাখ্যা করে।
ফ্যাবিও অলিভিরা 13

15

আইওএস 7 এ একই সমস্যা ছিল (আইওএস 8 ঠিক হয়ে গেছে বলে মনে হচ্ছে)। আমার জন্য সমাধানটি ছিল [self.view layoutIfNeeded]আমার viewDidLayoutSubviewsপদ্ধতির শেষে কল করা ।


ধন্যবাদ. এটি আমাকে সহায়তা করে yesterday গতকাল (আইওএস) এ) আমি এই সমস্যার মুখোমুখি হয়েছি। এটি iOS 7 এর জন্য সাহায্য করে
আলেকজান্ডার

@ ম্যাসিজেসুইচ আমার উত্তরটি শীর্ষে দেখুন।
সাউন্ড ব্লাস্টার

এটি আমার পক্ষে কাজ করেছিল! সুইফট সহ আইওএস 7.1 ব্যবহার করা। আমি ভিডলিডআউটআউটভিউগুলিতে সীমাবদ্ধতা সরিয়েছিলাম এবং সংযোজন করছি। আমি সুপার কলটি সরিয়েছি এবং এটি এখনও কাজ করছে না, তবে এই সমাধানটি কৌশলটি করেছে! এই ডায়নোসর একটি পাতা দিন! :)
জোমাফার

আইওএস 7.1 ব্যবহার করেও আমার পক্ষে কাজ করেছেন!
fdlr

14

আমারো একই ইস্যু ছিল. সমস্যাটি আমি সেল Xib তৈরির পথে ছিল। আমি সাধারণের মতো একটি জিব তৈরি করেছি এবং স্রেফ আমার কাস্টম ইউআইটিএবলভিউসেল ক্লাসে ডিফল্ট "ইউআইভিউ" এর ধরণটি পরিবর্তন করেছি। এর সঠিক উপায়টি হ'ল প্রথমে ডিফল্ট ভিউটি মুছুন এবং তারপরে টেবিল ভিউ সেল অবজেক্টটি xib এর উপরে টানুন। এখানে আরও বিশদ: http://allplayers.github.io/blog/2012/11/18/Custom-UITableViewCell-With-NIB/


1
নিখুঁত অন্তর্দৃষ্টি! আমি বুঝতে পেরে যুগে যুগে সময় নেব, বিশেষত কারণ যদি আমি অটোআউটআউট অক্ষম করে কোনও ইউআইভিউ ব্যবহার করি তবে আমার অ্যাপ্লিকেশনগুলি ক্রাশ হবে না।
গিলহর্ম 21

সুপার! নীচে @ আরনাড রেসোনও দেখুন
লুবো

7

আমি আমার কাস্টম সারণী দর্শন ঘরের সমস্ত সাবভিউয়ের জন্য "অটোলেআউট" বন্ধ করে সমস্যাটি সমাধান করেছি।

কাস্টম সেলের জন্য xib এ, একটি সাবভিউ নির্বাচন করুন এবং ফাইল ইন্সপেক্টর> ইন্টারফেস বিল্ডার ডকুমেন্ট> অটোলেআউট ব্যবহার করুন নির্বাচন করুন


4
আমিও তাই করেছি। যদিও আপনি
অটোলেআউট

7

আমার একই সমস্যা ছিল না UITableViewCellবরং UITableViewনিজে থেকে on কারণ এটি গুগলের প্রথম ফলাফল এটি আমি এখানে পোস্ট করব। দেখা গেল viewForHeaderInSectionসমস্যাটিই ছিল। আমি সৃষ্টি UITableViewHeaderFooterViewএবং সেট translatesAutoresizingMaskIntoConstraintsকরার NO। এখন এখানে আকর্ষণীয় অংশটি আসে:

আইওএস 7:

// don't do this on iOS 7
sectionHeader.translatesAutoresizingMaskIntoConstraints = NO;

আমি যদি এটি করি তবে অ্যাপটি ক্র্যাশ হয়ে গেছে

-LayoutSubviews কার্যকর করার পরে অটো লেআউট এখনও প্রয়োজন। ইউআইটিএবলভিউ--আউটআউটসভিউগুলির বাস্তবায়নের জন্য সুপারকে কল করা দরকার।

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

আইওএস 8:

// you have to do this, otherwise you get an auto layout error
sectionHeader.translatesAutoresizingMaskIntoConstraints = NO;

আমি যদি এটি ব্যবহার না করি তবে আমি নিম্নলিখিত আউটপুটটি পেতে পারি:

একসাথে সীমাবদ্ধতাগুলি পূরণ করতে অক্ষম।

আইওএস 8 এর জন্য আপনাকে শিরোলেখের জন্য স্বয়ংক্রিয় আকার পরিবর্তন করতে হবে k

কেন এটি এমনভাবে আচরণ করে তা জানেন না তবে মনে হয় অ্যাপল আইওএস 8-এ কিছু জিনিস ঠিক করেছে এবং আইওএস 7 এবং আইওএস 8-এ অটো লেআউট আলাদাভাবে কাজ করছে।


সাথী তুমি শুধু আমার দিন বাঁচাও!
মার্সিন মায়েজ

5

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

<view contentMode="scaleToFill" horizontalHuggingPriority="1000" id="1" translatesAutoresizingMaskIntoConstraints="YES" customClass="MXWCollapsibleTableHeaderView">


2

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

আমাকে আমার সেলগুলি স্বতন্ত্র নিবগুলিতে পৃথক করতে হয়েছিল যা অটোলাআউট ব্যবহার করে না।

আসুন আশা করি অ্যাপল এই জগাখিচুড়িটি পরিষ্কার করে দেবে।


2

আপনার নিজের মতামতগুলি সেলের পরিবর্তে ঘরের কনটেন্টভিউতে যুক্ত করুন। এর পরিবর্তে:

[self addSubview:someView];

আপনার অবশ্যই ব্যবহার করা উচিত

[self.contentView addSubview:someView];


1

আমি এটির মুখোমুখি হয়েছি কারণ আমি প্রাথমিকভাবে একটি ইউআইবিএবলভিউসিলের পরিবর্তে একটি এক্সআইবি ফাইলটিতে একটি ইউআইভিউ যুক্ত করেছি।


1

আমি বাধাই দিয়ে, এই ত্রুটির কাটানো backgroundViewআমার পটভূমি থেকে সংযোগকারী UIImageViewএবং accessoryViewআমার থেকে সংযোগকারী UIButtoncustomisations। আমার সন্দেহ হয় যে এগুলি আমি যেভাবে ব্যবহার করছি সেভাবে ব্যবহার করা হয়নি।


1

আমি আজ প্রথমবার এই সমস্যাটিতে চলে এসেছি। এখন অবধি আমার প্রোটোটাইপ ইউআইটিএবলভিউসেল সাবক্লাস ব্যবহার করার বিভিন্ন অভিজ্ঞতা ছিল তবে কখনও এই সমস্যাটিতে আসেনি। আমি যে কক্ষটির সাথে কাজ করছিলাম তার মধ্যে আলাদা ছিল তা হ'ল আমার কাছে একটি ব্যাকগ্রাউন্ডভিউতে একটি আইবিআউটলেট ছিল যা আমি ঘরটি রঙ করার জন্য ব্যবহার করছিলাম। আমি দেখতে পেলাম যে আমি যদি একটি নতুন সম্পত্তি তৈরি করেছি এবং এখনও একটি নতুন ইউআইভিউ যুক্ত করেছি যা পুরো ঘরটির প্রসারিত করে, তবে এই দাবিটি চলে যায়। এর কারণটি যাচাই করার জন্য, আমি এই দৃশ্যটি ব্যাকগ্রাউন্ডভিউ আউটলেটে সংযুক্ত করে ফিরে গিয়েছিলাম এবং দৃ the়তাটি আবার উপস্থিত হয়েছিল। এখন পর্যন্ত, এই পরিবর্তনটি করার পরে একটি সাবক্ল্যাসড প্রোটোটাইপ ইউআইটিএবলভিউসেলটিতে অটোলাউট ব্যবহার করে অন্য কোনও সমস্যা নেই।


1

আমি এই সমস্যার জন্য কোনও যথাযথ সমাধান পাইনি তবে আপনি ফ্রেম ব্যবহার করে এবং অনুবাদগুলি সেট না করে এটি সমাধান করতে পারেনআটোরেজাইজিং ম্যাস্কিন্টো কনট্রেন্টস সম্পত্তিটি কোনও (ডিফল্টরূপে এটি হ্যাঁ, তাই এটি সেট করবেন না)

CGRect headerViewFrame = CGRectMake(0,0,320,60); //Frame for your header/footer view
UIView *tableHeaderView = [[UIView alloc] initWithFrame:headerViewFrame];
tableHeaderView.translatesAutoresizingMaskIntoConstraints = Yes; //Or don't set it at all
[self.tableView setTableHeaderView:tableHeaderView];

0

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

আমার পরিস্থিতিতে - যেহেতু এটি খুব সাধারণ দৃষ্টিভঙ্গি যা সমস্যার সৃষ্টি করেছিল - তাই আমি আইবিতে নয় প্রোগ্রামগুলিকভাবে মতামত তৈরি করেছি। যে এটি সমাধান। আপনি এই ভিউগুলি অন্যান্য xib ফাইলগুলিতে সরিয়ে নিতে পারেন এবং সেগুলির জন্য অটো লেআউটটি অক্ষম করতে পারেন। আমি অনুমান করি যে এটি কাজ করবে।


0

কিছু পরিস্থিতিতে, এটি সহজেই বিন্যাসের সমস্যাটি সমাধান করে (আপনার বিন্যাসের উপর নির্ভর করে)। আপনার জেআইআরএফটিভিউ সাবক্লাসের ভিতরে, জাগ্রত থেকে ফর্মনিব বা আরম্ভের মধ্যে, অটোরেসাইজিং মাস্ক সেট করুন:

self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

ডিফল্টরূপে এটি ইউআইভিউউটোরিজিংননে সেট করা আছে


এটি আমার যে সমস্যার মুখোমুখি হয়েছিল তা সমাধান করেছে। [tableViewCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].heightউচ্চতা পেতে আমি একত্রে একটি টেবিল ঘরের অভ্যন্তরে অটো-লেআউটটি ব্যবহার করছি যা আমি এর পরে ব্যবহার করি heightForRowAtIndexPath
নাথানএলডেনএসআর

0

আমার ক্ষেত্রে,

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

self.tableView.backgroundView = self.tableBackgroundImageView;

সুতরাং, আমি ইউআইভিউ (রুট ভিউ) থেকে ব্যাকগ্রাউন্ডভিউয়ের জন্য ইউআইআইমেজভিউ সরিয়েছি এবং সেই ইউআইআইমেজভিউতে সমস্ত স্বয়ংক্রিয় বিন্যাসের রেফারেন্স পুনরায় সেট (অপসারণ) করব। আমি ইউআইভিউ (রুট ভিউ) থেকে বাইরের পটভূমির জন্য সেই ইউআইআইমেজভিউটি রেখেছি। এবং তারপরে কোডে ইউআইটিএবলভিউয়ের ব্যাকগ্রাউন্ডভিউকে নিয়োগ করুন।

তারপর স্থির।


0

আমি সমাধান খুঁজে পেয়েছি।

আমার ক্ষেত্রে, আমি স্টোরিবোর্ডে সেলের ভিউ তৈরি করেছি (স্বয়ংক্রিয় বিন্যাস সক্ষম করে) এবং আমি আমার ভিউকন্ট্রোলআরএম-তে কাস্টম ইউআইটিএবলভিউসেল ইন্টারফেসটি সংজ্ঞায়িত করেছি, আমাকে ইন্টারফেসটি ভিউকন্ট্রোলআরআরতে স্থানান্তরিত করতে হবে।


0

আমি কাস্টম ইউআইটিএবলভিউসেল তৈরি করতে স্টোরিবোর্ডটি ব্যবহার করার সময় আমি একই সমস্যার মুখোমুখি হয়েছি। ভাগ্যক্রমে আমি সমস্যাটি খুঁজে পেয়েছি, কারণ আমি অ্যাকসেসরিভিউ ([ইউআইটিএবলভিউসেল সেটঅ্যাক্সেসরিভিউ:]) ইউআইবুটনে আউটলেট করেছি যা আমি ঘরে যুক্ত করেছি।

আইওএস 6 চালানোর সময় এটি আমার প্রকল্পে ঘটেছিল।

সমাধান

আমি অ্যাকসেসরিভিউ এবং আমার বোতামের মধ্যে আউটলেটটি প্রকাশ করি যার মধ্যে কাস্টম সেল রয়েছে।

প্রস্তাব

আপনি ইউআইটিএবল ভিউসেল এর স্থানীয় উপাদান ব্যবহার এবং এটি পরিবর্তন করা উচিত নয়।


0

এই কলটির [super viewDidAppear:]মধ্যে কল করতে ভুলে যাওয়ার কারণে ঘটতে পারে viewDidAppearতবে আমি নিশ্চিত যে এটিই একমাত্র কারণ নয়।


0

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



0

আমি এক্সকোড 6, আইওএস 7+ এ সেট করে রাখছি এমন একটি টেবিল ফুটার ভিউয়ের সাথে আমার খুব অনুরূপ সমস্যা ছিল। সমাধানটি নিব ফাইলের ফর্ম্যাটে ছিল। স্পষ্টতই এটি এক্সকোড 4 ফর্ম্যাট বা কিছুতে আটকে ছিল। ফাইল সেটিংস পরিবর্তন করে "এতে খোলে: এক্সকোড ".০" (বা ডিফল্ট, এই বিষয়টির জন্য), এটি তাত্ক্ষণিকভাবে সংশোধন করে। সুযোগটি সমাধানটি খুঁজে পেয়েছিল: এটি আমাকে পাগল করে চলেছে, তাই আমি পুরো ফাইলটি মুছলাম এবং স্পষ্টতই ডিফল্ট সেটিংসটি দিয়ে আবার তৈরি করেছি। আমার জানা নেই কেন সর্বশেষ Xcode এ কেবল ফাইল সম্পাদনা করা এটিকে Xcode 5+ বিন্যাসে রূপান্তরিত করে না, কারণ এটি সাধারণত ঘটে থাকে।

চ


0

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


0

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



0

সমাধান: কল সুপার লেআউটসুভিউগুলির আগে বাধা পরিবর্তন করুন change

- (void)layoutSubviews
{

    [self _updateConstraints];

    [super layoutSubviews];
}

0

পরিবর্তে ওভাররাইডের জন্য কার্ল লিন্ডবার্গের জবাবটি আমি পরিবর্তন করেছি UITableViewএবং এটি আমার পক্ষে কাজ করা শুরু করেছে:

UITableView + + AutoLayoutFix.h

@interface UITableView (AutoLayoutFix)
@end

UITableView + + AutoLayoutFix.m

#import <objc/runtime.h>

@implementation UITableView (AutoLayoutFix)

+ (void)load
{
    Method existingMethod = class_getInstanceMethod(self, @selector(layoutSubviews));
    Method newMethod = class_getInstanceMethod(self, @selector(_autolayout_replacementLayoutSubviews));

    method_exchangeImplementations(existingMethod, newMethod);
}

- (void)_autolayout_replacementLayoutSubviews
{
    [super layoutSubviews];
    [self _autolayout_replacementLayoutSubviews]; // not recursive due to method swizzling
    [super layoutSubviews];
}

@end

তারপরে MyViewController.mআমি কেবল বিভাগটি আমদানি করেছি:

#import "UITableView+AutoLayoutFix.h"

0

আমি একই সমস্যার মুখোমুখি হয়েছি এবং শেষ পর্যন্ত এর কারণটি খুঁজে পেয়েছিলাম যে আমি ইউআইটিএবলভিউসেলটিতে একটি প্রতিবন্ধকতা যুক্ত করেছি, যা ইউআইটিএবলভিউসেল এর বিষয়বস্তু হওয়া উচিত । আমি যখন বাধা পরিবর্তন করলাম তখন সব ঠিক হয়ে গেল!

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