ইউআইবাটন শিরোনাম / পাঠ্যসূচী প্রোগ্রামটি আপডেট করা কি সম্ভব?


96

আমার একটি আছে UIButton, যা টিপলে, একটি নতুন ভিউ নিয়ে আসে যেখানে ব্যবহারকারী কিছু সেটিংস পরিবর্তন করতে পারে। যখন ভিউটি বরখাস্ত করা হবে, আমি UIButtonনতুন রাষ্ট্রটি প্রতিফলিত করার জন্য শিরোনাম / পাঠ্য আপডেট করতে চাই । আমি ফোন দিচ্ছি:

[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
[myButton setTitle: @"myTitle" forState: UIControlStateApplication];
[myButton setTitle: @"myTitle" forState: UIControlStateHighlighted];
[myButton setTitle: @"myTitle" forState: UIControlStateReserved];
[myButton setTitle: @"myTitle" forState: UIControlStateSelected];
[myButton setTitle: @"myTitle" forState: UIControlStateDisabled];

তবে এটি আইবিতে বর্ণিত মূল পাঠ / শিরোনাম থেকে কখনই পরিবর্তিত হবে বলে মনে হয় না।


4
আপনি কি পোস্ট কোডটি কল করার বিষয়ে নিশ্চিত? আপনি কি এটি প্রমাণ করার জন্য একটি BREAKPOINT স্থাপন করেছেন? আপনি কি আপনার প্রতিনিধি স্বাক্ষর পোস্ট করতে পারেন?
পাবলো সান্তা ক্রুজ

4
একদিকে যেমন, আমি বিশ্বাস করি আপনি একবারে একাধিক কন্ট্রোল স্টেটের রেফারেন্স করতে পারেন: [মাই বাটন সেটটাইটেল: @ "মাইটাইটল" ফরস্টেট :( ইউআইসিএন্ট্রোলস্টেট অ্যাপ্লিকেশন | ইউআইসিএন্ট্রোলস্টেট হাইটলাইটেড ... ...)]; লজিক্যাল ওআর অপারেটরের (||) বিপরীতে বিটওয়াইস ওআর অপারেটরের ব্যবহারের বিষয়টি নোট করুন। সাধারণভাবে, আপনি যখন এই জাতীয় রাজ্যের সাথে ডিল করছেন, আপনি তাদের সাথে একত্রে বা এগুলি করতে পারেন অপারেটর. কেউ আমাকে ভুলভাবে ভুল করে থাকলে আমাকে সংশোধন করে। :)
সিআইএফ ফিল্টার

আমি আশা করি তাদের
ইউআইসিএন্ট্রোলস্টেটএল

4
বিটওয়াইস সংমিশ্রণগুলি আইওএস 5-এ আমার জন্য কাজ করবে বলে মনে হচ্ছে না।
এচিলন

একই সমস্যা এখানে। বিটওয়াইজ সমন্বয়গুলি আইওএস 5 এ আমার জন্য কাজ করে না। / সিসি @ লুকাসটিজমা
znq

উত্তর:


52

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


সম্পাদনা করুন: যদিও এটি এখানে ঘটনাটি নয় তবে এর আগে এমন কিছু ঘটতে পারে যদি আপনি বোতামটিতে কোনও বিশিষ্ট শিরোনাম সেট করে থাকেন, তবে আপনি শিরোনামটি বদলানোর চেষ্টা করবেন, বিশেষিত শিরোনামটি নয়।


4
বিঙ্গো, এটি ছিল, ধন্যবাদ। আমি সত্যিকার অর্থেই চাই যে অবজেক্টিভ-সি এই জাতীয় ক্ষেত্রে একটি নালপয়েন্টার এক্সেপশন নিক্ষেপ করবে, চুপচাপ ভান করে না যে কোনও শূন্য বস্তুতে কোনও বার্তা প্রেরণ করা ঠিক আছে। এটি প্রায় প্রতিদিন আমাকে কামড়ায় ... উঘ!
জর্জ আর্মহোল্ড

20
ওজেজেসি শূন্য বার্তা প্রেরণে তার ঠিক 'ভান' করে না, কারণ শূন্য বার্তাগুলি প্রেরণ করা ঠিক ...
জাসারিএন

4
এখানে সমস্যাটি শূন্য পয়েন্টার নয়। ইস্যুটি হ'ল আইবি একটি ইউআইবাটন ইনস্ট্যান্ট সেটআপ করেছে যা কোডে সঠিকভাবে রেফারেন্স করা হচ্ছে না (আইবিআউটলেট মাধ্যমে), সুতরাং এটি কখনই প্রোগ্রামিকভাবে ম্যানিপুলেট করা যায় না।
সিআইফিল্টার

113

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

[myButton setTitle: @"myTitle" forState: UIControlStateNormal];


13

আমি আরও একটি সমস্যা আবিষ্কার করেছি। এটি আইওএস 5 এ প্রবর্তিত একটি বাগ হতে পারে, তবে আমি ভেবেছিলাম যে এটির মুখোমুখি হওয়া অন্য কারও জন্য আমি এটি উল্লেখ করব।

আপনি যদি XIB- এ বোতামটির জন্য কোনও ডিফল্ট পাঠ্য সেট না করেন, আপনি প্রোগ্রামটিকে সেট করে নিলে কোনও পাঠ্য উপস্থিত হবে না। এবং আপনি যদি XIB তে পাঠ্য সেট করেন, আপনি পরবর্তীকালে প্রোগ্রামটিমে বোতামের জন্য নির্দিষ্ট করা কোনও পাঠ্য ডিফল্ট পাঠ্যের আকারে কেটে যাবে।

এবং অবশেষে, আপনি যদি নিজের বোতামটি দিয়ে প্রদর্শনটি দেখান এবং তারপরে অন্য একটি ভিউ (একটি অ্যাকশনশিটের মতো) এবং তারপরে বরখাস্ত করেন তবে আপনি যে প্রোগ্রামটিকে বাটনে বরাদ্দ করেছেন তা মোছা হবে এবং বোতামের ক্যাপশন আপনি যা সেট করেছেন তাতে ফিরে আসবে একাদশে


4
আমি এই তিনটি আচরণই লক্ষ্য করেছি এবং এটি অবশ্যই বিরক্তিকর।
ফ্লাই

4
আমার ছাঁটাই সমস্যা ছিল (পাঠ্যটিকে আরও দীর্ঘায়িতভাবে কিছুতে পরিবর্তন করা), তাই আমি যখন পাঠ্যকে দীর্ঘ শব্দে পরিবর্তন করি তখন আমি সেই পাঠ্যটির শেষে 'স্থান' সংরক্ষণ করতে অতিরিক্ত স্পেস রেখেছিলাম। এটা আমার জন্য কাজ করেছে।
mattorb

4
দেখা যাচ্ছে যে এর জন্য সমাধানটি পদ্ধতিটি ব্যবহার করতে হবে [_বাটন সেটটাইটেল: @ "শিরোনাম" ফরস্টেট: ইউআইসিএন্ট্রোলস্টেট নরমাল]; পরিবর্তে _button.titleLabel.text সম্পত্তি সরাসরি অ্যাক্সেস করার পরিবর্তে। পদ্ধতি কলটি ধরে থাকুন এবং সম্ভবত আপনি যা চান তা পাবেন।
রিমেল

12

ক্যাফিন কোমার সমস্যা সমাধান হলেও, আমি শিরোনামটি ইউআইবাটন না দেখানোর জন্য আরও একটি সম্ভাব্য কারণ প্রস্তাব করতে চাই।

আপনি যদি ইউআইবাটন ব্যবহার করে কোনও চিত্র সেট করেন

- (void)setImage:(UIImage *)image forState:(UIControlState)state

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

পরিবর্তে এই পদ্ধতিটি ব্যবহার করুন

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state

বোতাম ইমেজ এবং শিরোনাম প্রভাবিত হবে না জন্য।

আমি এটিকে .xib এ তৈরি প্রোগ্রামগুলি তৈরি বোতাম এবং বোতাম দিয়ে পরীক্ষা করেছি



4

দস্তাবেজগুলি আপনাকে উত্তরটি বলে! ইউআইবাটন যদি শিরোনাম পরিবর্তনটিকে অগ্রাহ্য করে তবে যদি এর মধ্যে ইতিমধ্যে ব্যবহারের জন্য একটি অ্যাট্রিবিউটেড স্ট্রিং থাকে (তবে এটি Xcode ইন্টারফেস বিল্ডার ব্যবহার করার সময় আপনি যে ডিফল্ট হিসাবে পাবেন)।

আমি নিম্নলিখিত ব্যবহার:

[self.loginButton 
     setAttributedTitle:[[NSAttributedString alloc] initWithString:@"Error !!!" attributes:nil] 
     forState:UIControlStateDisabled];
[self.loginButton setEnabled:NO];

3

আর একটি সম্ভাব্য কারণ হ'ল:

আপনি যদি পদ্ধতিতে বোতামটির শিরোনাম সেট করার চেষ্টা করেন (id)initWithNibName: ...তবে আপনার বোতামের সম্পত্তিটি এখনও শূন্য থাকবে। এটি এখনও ইউআইবাটনকে অর্পণ করা হয়নি।

আপনাকে অবশ্যই নিশ্চিত হতে হবে যে আপনি (void)viewWillLoadবা আপনার মতো কোনও পদ্ধতিতে বাটনগুলি সেট করছেন (void)viewWillAppearতবে আপনি সম্ভবত সেগুলি এতটা দেরিতে সেট করতে চান না (void)viewDidAppear


2

কখনও কখনও এটি সত্যিই জটিল হতে পারে। সহজ উপায় হ'ল " রিফ্রেশ " বোতাম ভিউ!

//Do stuff to your button here.  For example:

[mybutton setEnabled:YES];

//Refresh it to new state.

[mybutton setNeedsDisplay];

1

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


1

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


এটি আমার পক্ষে খুব দরকারী ছিল .. আপনি যদি সেটটাইটেল এবং সেটনিডস কল করেন তবে দেখা যাচ্ছে যে কোনও পটভূমির থ্রেড থেকে দর্শনটি আপডেট হবে।
ব্যবহারকারী 1111828

0

আপনি মূল থ্রেডে আছেন তা নিশ্চিত করুন।

যদি তা না হয় তবে এটি বোতামের পাঠ্যটি সংরক্ষণ করবে। আপনি সেখানে ডিবাগারটিতে অবজেক্টটি পরিদর্শন করার সময় এটি উপস্থিত থাকবে। তবে এটি আসলে দেখুনটি আপডেট করবে না।

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