-didSelectRowAtIndexPath: ডাকা হচ্ছে না


295

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

এটি ঘটানোর জন্য কারও কি আমার ধারণা রয়েছে যা আমি আঁকিয়েছি?


79
এছাড়াও আপনার ইউআইটিবেল ভিউয়ের শীর্ষে একটি অঙ্গভঙ্গি সনাক্তকারী থাকতে পারে যা নির্বাচনটি শোষণ করে রাখে .. (সম্ভাব্যতার একটি)
এম.উথম্যান

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

1
হাই এম ওথম্যান, আপনার মন্তব্যটি আমার নিজের ইস্যুতে ঠিক কী ভুল হয়েছিল। আপনি কী জানেন কীভাবে ইঙ্গিতরর সনাক্তকারীকে 'এর সাথে' কাজ করতে হয় UITableView?
yhl

15
আমি লক্ষ্য করেছি যে আমি যদি টেপ করে ধরে রাখি তবে শেষ পর্যন্ত কলটি কল করবে -didSelectRowAtIndexPath। আমি টুপিভিউতে ট্যাপের অঙ্গভঙ্গি সনাক্তকারী হিসাবে আমার টুপিটি খুঁজে পেয়েছি এবং স্পর্শ পাওয়ার আগে ইঙ্গিতটি প্রথমে ব্যর্থ হতে হয়েছিল। এটি অদ্ভুত হলেও টেবিল নির্বাচন অ্যানিমেশনটি অঙ্গভঙ্গি সনাক্তকারী দ্বারা প্রভাবিত হয় না।
Hlung

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

উত্তর:


97

দেখে মনে হচ্ছে ক্লাসটি UITableViewDelegateসেই টেবিল দর্শনটির জন্য নয় , যদিও UITableViewControllerএটি স্বয়ংক্রিয়ভাবে সেট করার কথা।

কোনও সুযোগ আপনি ডেলিগেটকে অন্য কোনও শ্রেণিতে পুনরায় সেট করবেন?


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

1
সবার জন্য আরেকটি বাউন্ডারি কেস - আমি কোডটিতে ডেলিগেটকে তারে ফেলেছিলাম এবং ভুলে গিয়েছিলাম আমি এর আগে স্টোরিবোর্ডের মাধ্যমে প্রতিনিধিটি তারে ফেলেছিলাম .... এটি শেষ করার জন্য শেষ একটি।
অলিভার ডুঙ্গি

1
আপনি কীভাবে "অন্য কোনও শ্রেণীর প্রতিনিধিকে রিসেট" করতে পারেন দয়া করে? আমার এই একই সমস্যা আছে এবং এটি সমাধান করতে পারি না
আলফ্রো

1
myTableViewController.tableView.delegate = xxx
হান্টার

534

আমার মতো কেউ যদি ঠিক একই বোকা ভুল করেছিল তবে:

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


47
একই সমস্যা এখানে। এর কারণ XCode নির্বাচনের আগে ডিলিলেক্টকে স্বয়ংক্রিয়ভাবে পূর্ণ করে তোলে।
ব্যবহারকারী 1021430

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

503

আর একটি বিষয় যা সমস্যার দিকে নিয়ে যেতে পারে তা নির্বাচন ধরণের নয়:

ইউআইটিএবল ভিউ নির্বাচন ধরণের

হওয়া উচিত Single Selectionস্বাভাবিক নির্বাচনের জন্য, should না হতে No Selection

প্রোগ্রামগতভাবে এটি করতে, করুন:

tableView.allowsSelection = YES

4
আমি এটিকে চালিয়ে যাচ্ছি কারণ আমার কাছে এমন দৃশ্য রয়েছে যা সর্বদা সম্পাদনা মোডে থাকে এবং আমি "সম্পাদনার সময় কোনও নির্বাচন নয়" থেকে ডিফল্টটি পরিবর্তন করতে ভুলে যেতে থাকি।
প্রতিসম

3
আপনি এই ভিউটি কনট্রোলার এনএসপিআরমিটারএসর্টের নিজস্ব -ডিজডলিড পদ্ধতিতে এই লাইনটি যুক্ত করতে পারেন (স্ব। টেবিলভিউ.নিজসলেশন);
নিকোলে শুবেনকভ

যারা টেবিল ভিউ.আরএক্স.ইটিমসিলেক্টড.সউসক্রাইব করেন নি তাদের কল কল ফিরিয়ে নেই, এটিই ইস্যু এবং উপরের ফিক্স কাজগুলি
ilিলিপ

আপনি যখন কিছু কোডবেস দখল করেন তখন সহায়ক এবং এতে স্টোরবোর্ডে এই নির্বাচনটি নিষ্ক্রিয় করে ট্যাগসমেত নির্বাচন করা হয়নি, ট্যাগ সহ বাটন ব্যবহার করে কোড রয়েছে Nit
নিতিন আলাবুর

এই টেবিলটি কি ডিফল্ট আচরণ দেখুন?
ফ্রস্টমোর্ন

296

আর একটি সম্ভাবনা হ'ল যে কোনও ইউআইটিএপজেস্টাররনগায়াইজার ইভেন্টগুলি খাচ্ছিল, যেমনটি এখানে ছিল: https://stackoverflow.com/a/9248827/214070

আমি এই কারণটিকে সন্দেহ করিনি, কারণ টেবিলের ঘরগুলি এখনও নীলকে এমনভাবে হাইলাইট করবে যেন ট্যাপগুলি মধ্য দিয়ে যাচ্ছে।


এটা আমার সমস্যা ছিল! তোমাকে অনেক ধন্যবাদ!! আমি বলতে চাইছি এটি স্পষ্টভাবে আগে কাজ করেছিল, তবে আমি ইউআইটিএপজেস্টচারআরকনাইজার * ট্যাপ = প্রয়োগ করার পরে এটি কাজ করা বন্ধ করে দিয়েছে [[ইউআইটিএপজেস্টারআরসিগাইজার বরাদ্দ] #WithTarget: স্ব-ক্রিয়া: @ নির্বাচক (বরখাস্ত কীবোর্ড)]; [স্ব.ভিউ অ্যাডগাস্টারআর সনাক্তকারী: ট্যাপ];
coolcool1994

26
আপনি ঠিক যেমন @ কুলকুল ১৯৯৪ প্রয়োগ করেছেন ঠিক তেমনই আমার সমস্যা ছিল [সেট ট্যাপসেনসেলসটিচআইচ ভিউ: না]; এবং সমস্যা সমাধান।
নিজজ

ধন্যবাদ, এটি আমাকে সাহায্য করে। আমার ক্ষেত্রে didSelectRowAtIndexPathকেবল ঘরটি মুছে ফেলার পরে কাজ করে না commitEditingStyle। তারপরে আমি তৈরি করেছি UITapGestureRecognizerএবং tapAction:পেয়েছি ( ) indexPathথেকে এবং কল করেছিsender.view[self.tableView indexPathForCell:sender.view][self.tableView.delegate didSelectRowAtIndexPath:myIndexPath]
আলেক্সেমিলিয়ন

1
এটি আমার সমস্যাও ছিল .. টেবিলভিউতে তাপমাত্রা অপসারণের জন্য কোড যুক্ত করুন এবং এটি মনোযোগের মতো কাজ ছিল - (UITableViewCell *) টেবিল ভিউ: (UITableView *) টেবিলভিউ সেলফরআউটইন্ডেক্সপথ: (NSIndexPath *) সূচিপথ {UITapGestureGecureR বরাদ্দ [ ] এটা]; gesture.cancelsTouchesInView = NO; [স্ব-টেবিলভিউ অ্যাডজেস্টারআর সনাক্তকারী: অঙ্গভঙ্গি]; }
উদয় শ্রী

6
ধন্যবাদ @ এনজ্যাক্স, সুইফ্ট 4 টি টপ ক্যানসেলস টাচসআইএনভিউ = মিথ্যা
অ্যারিভেন নাদার

150

সমস্ত ভাল উত্তর, কিন্তু সন্ধানের জন্য আরও একটি আছে ...

(বিশেষত ইউআইটিএলভিউ প্রোগ্রামক্রমে তৈরি করার সময়)

টেবিলভিউ [tableView setAllowsSelection:YES];সেট করে এমন কোনও লাইন সেট করে বা মুছে ফেলে নির্বাচনের প্রতিক্রিয়া জানাতে পারে তা নিশ্চিত করুন NO


9
আমি setAllowsSelectionDuringEditing:তালিকায় যুক্ত করব (যখন টেবিলভিউ সম্পাদনা মোডে থাকে)
অ্যালেক্স -২

ধন্যবাদ! আইবিতে আমাকে "নির্বাচন" বিভাগের মানতে পরিবর্তন করতে হয়েছিল Single Selection
সাশো

90

সমস্যা দেখা দিলে UITapGestureRecognizerআপনি এটিকে ঠিক করতে পারেন:

  • স্টোরিবোর্ডে:

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

সাথে কোড Objective-C:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)]; 
[self.view addGestureRecognizer:tap];

[tap setCancelsTouchesInView:NO];

সহ কোড Swift:

let tap = UITapGestureRecognizer(target: self, action:Selector("dismissKeyboard"))
view.addGestureRecognizer(tap)

tap.cancelsTouchesInView = false

67

এই পরিস্থিতিতে আমি দুটি জিনিসের মুখোমুখি হয়েছি।

  1. আপনি ইউআইটিএবলভিউ ডেলিগেট প্রোটোকলটি প্রয়োগ করতে ভুলে থাকতে পারেন, বা আপনার শ্রেণি এবং আপনার টেবিল দৃশ্যের মধ্যে কোনও প্রতিনিধি দল নেই।

  2. আপনার সারির অভ্যন্তরে আপনার একটি ইউআইভিউ থাকতে পারে যা প্রথম প্রতিক্রিয়াকারী এবং আপনার ক্লিকগুলি সরিয়ে নিয়ে যায়। একটি ইউআইবাটন বা অনুরূপ কিছু বলুন।


5
এটি আইওএস on-তে ঘটতে শুরু করে, সামগ্রী ভিউয়ের মধ্যে থাকা "ব্যবহারকারী ইন্টারঅ্যাকশন সক্ষম" অক্ষম করে এটি স্থির করে।
কোফ

1
@ কোফ এটি পেরেক দিয়েছিল। এক্সকোড 5 এর ইন্টারফেস বিল্ডারে একটি ইউআইটিএবলভিউসেল তৈরি করা এটি ব্যবহারকারীর ইন্টারঅ্যাকশন সক্ষম = ইয়েস সহ এটি তৈরি করে। খারাপ এক্সকোড 5!
jsd

44

আমারও একই সমস্যা হয়েছে। এবং এটি খুঁজে পাওয়া কঠিন ছিল। তবে আমার কোডে কোথাও এটি ছিল:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    return nil;
}

এটি অবশ্যই হবে return indexPath, অন্যথায় -tableView:didSelectRowAtIndexPath:বলা হচ্ছে না।


2
ইনডেক্সপথ-এ সিলেক্টরো এর জন্য সঠিক স্বাক্ষরটি হ'ল: - (শূন্য) টেবিল ভিউ: (ইউআইটিবেল ভিউ *) টেবিল ভিডডডলেকট্রোঅ্যাট ইন্ডেক্সপথ: (এনএসআইন্ডেক্সপথ *) ইনডেক্সপথ {
কুলকুল 1994

আমার জন্য এটি টেবিলভিউ কল করা শুরু করবে না: যতক্ষণ না আমি উইলসিলেট্রাউট ইন্ডেক্সপথ পুরোপুরি মুছে ফেলব ততক্ষণ পর্যন্ত
সেলসট্রাকআউট

38

আপনি যদি ইউআইটিএবলভিউয়ের শীর্ষে কোনও অঙ্গভঙ্গি সনাক্তকারী যুক্ত করেন তবে কল করা didSelectRowAtIndexPathহবে না।

সুতরাং নির্দিষ্ট দৃষ্টিতে স্পর্শ এড়ানোর জন্য আপনাকে অঙ্গভঙ্গি সনাক্তকারী প্রতিনিধি পদ্ধতি ব্যবহার করতে হবে।

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ([touch.view isDescendantOfView:YourTable]) {
        return NO;
    }
    return YES;
}

3
if ([touch.view isDescendantOfView:YourTable])
সুধীশ

29

আমি এমন সমস্যায় পড়েছি যেখানে কয়েক মাস পরে আমার কোডটি না দেখে আমি ভুলে গিয়েছিলাম যে কিছু প্রয়োজনীয়তার কারণে আমি নিম্নলিখিত পদ্ধতিটি প্রয়োগ করেছি যা প্রয়োজনীয় ছিল না

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath  *)indexPath{
    return NO;
}

এটি নির্বাচিত করার জন্য এটি সারির জন্য হ্যাঁ ফেরত দেওয়া উচিত।


24

আপনি এই বিকল্পগুলি নির্বাচন করতে হবে

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

তবে আপনি যদি UITableViewক্লিক করে হাইলাইট না করতে চান তবে আপনার UITableViewCellবৈশিষ্ট্য পরিবর্তন করা উচিত ।

নীচের মতো নির্বাচনের জন্য কোনও বিকল্প বেছে নিন না Choose

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


20

UITapGestureRecognizerকীবোর্ডটি কল করা didSelectRowAtIndexPath:থেকে বিরত রাখার জন্য আমি আমার টেবিলের ভিউটিতে রেখেছিলাম । আশা করি এটি কাউকে সাহায্য করবে।


19

আমার মতো আপনার যদি সমস্যা হয় তবে: আপনার টেবিলভিউ সম্পাদনা মোডে থাকলে এই পদ্ধতিটি বলা হবে না। আপনাকে অনুমতিগুলি নির্বাচন করতে হবেসেটিংলেচারিংএডিংটি সত্য হিসাবে to

এই প্রশ্নটির মাধ্যমে: সম্পাদনা করার সময়, `ইউআইটিএবলভিউ did ডিডলেসট্রাকটঅ্যাট ইন্ডেক্সপথ কল করে না ??


19

আমারও একই সমস্যা ছিল,

কারণটি ব্যবহার করছিল UITapGestureRecognizer। আমি অন্য কোথাও টেপ করলে কীবোর্ডটি খারিজ করতে চেয়েছিলাম। আমি বুঝতে পেরেছি যে এটি সমস্ত ট্যাপ ক্রিয়াকে ওভাররাইড করে, এজন্যই, didSelectRowAtIndexPathফাংশনটি কল করা হয়নি।

আমি যখন সম্পর্কিত সারিগুলিতে মন্তব্য করি তখন UITapGestureRecognizerএটি কার্যকর হয়। এছাড়াও আপনি UITapGestureRecognizer selectorটেপযুক্ত কিনা তা ফাংশনটি পরীক্ষা করতে পারেন UITableViewCell


14

যে আমি নির্বাচন করেছেন আমার ক্ষেত্রে, didSelctRowAtIndexPath কলিং না কারণে কেউ মধ্যে নির্বাচন tableView সম্পত্তির, এর সেট একক নির্বাচন আমার সমস্যার সমাধান

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


11

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


10

যদিও অন্য একটি উত্তর গৃহীত হয়েছে, আমি এই সমস্যাটি পর্যবেক্ষণকারীদের জন্য আরও একটি সম্ভাব্য সমস্যা এবং সমাধান যুক্ত করব:

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

সমাধানটি হ'ল নিয়ন্ত্রককে অন্য কোনও শক্তিশালী রেফারেন্স সহ ট্র্যাক রাখা, যতক্ষণ না আপনি নিশ্চিত হন যে আপনার আর এটির প্রয়োজন হবে না।


কন্ট্রোলার আবর্জনা সংগ্রহ করা হচ্ছে যখন এর দৃশ্য এখনও প্রদর্শিত হচ্ছে? আসলে কি তা ঘটতে পারে?
ড্রুक्स

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

আমার কোডটিতে মেমরির আকারের সমস্যাটি বাড়ছে এবং আমি এটির কিছুটা এবং কোডের অন্য কোথাও ঠিক করেছি এর ঠিক পরে নির্বাচন করুন, কেবল প্রথমবারের মতো কল হবে না। আমি জানি না এটি সমস্যার ন্যায্যতা দেয় কি না।
অ্যাম্বার কে

10

ডেটাসোর্স সেট এবং ভিডডিডোড পদ্ধতিতে প্রতিনিধি হিসাবে নীচে লিখুন:

[self.tableView setDelegate:self];

[self.tableView setDataSource:self];

আমি ডেটাসোর্স কল করছিলাম কিন্তু প্রতিনিধি নই ... ধন্যবাদ!
Gmeister4

9

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

আমার কাছে tableViewControllerএটি আমার "বেস" নিয়ামক এবং তারপরে আমি এই নিয়ামকের সাবক্লাস তৈরি করি। আমি আমার সমস্ত কোড লিখছিলামtableView:didSelectRowAtIndexPath "বেস" ক্লাসে রুটিনে । সম্পূর্ণরূপে ভুলে গিয়েছিলাম যে ডিফল্টরূপে এই রুটিনটি আমার সাবক্ল্যাসেও পাশাপাশি তৈরি হয়েছিল (কোনও কোড দিয়ে কিছু করা হয়নি)। সুতরাং যখন আমি আমার অ্যাপ্লিকেশনটি চালালাম তখন এটি কোডের সাবক্লাস সংস্করণটি চালিয়েছিল, কিছুই করেনি এবং আমাকে দু: খিত করে। অবশ্যই, আমি একবার সাবক্লাসগুলি থেকে রুটিনটি সরিয়ে ফেললাম, এটি এমটি "বেস" শ্রেণির রুটিন ব্যবহার করেছিল এবং আমি ব্যবসায় আছি।

আমি জানি. হাসবেন না। তবে সম্ভবত এটি আমার হারিয়ে যাওয়া ঘন্টাটিকে বাঁচাবে ...


8

এটিতে আমার 2 সেন্ট দেওয়া।

আমার একটি কাস্টম ইউআইটিএবলভিউসেল ছিল এবং পুরো কক্ষটি coveringেকে একটি বোতাম ছিল, সুতরাং স্পর্শটি হওয়ার পরে, বাটনটি সেলটি নয় নির্বাচিত হয়েছিল।

হয় বাটনটি সরিয়ে ফেলুন বা আমার ক্ষেত্রে, আমি ব্যবহারকারীর ইন্টিগ্রেশন সক্ষম করুনটিকে বোতামটিতে মিথ্যা হিসাবে সেট করেছিলাম, সেভাবে সেলটি নির্বাচিত ছিল।


8

আপনি যদি এটি পড়ে থাকেন তবে এখনও সমস্যার সমাধান হয় না।

আমার কাস্টম সেল রয়েছে, যেখানে " ব্যবহারকারী ইন্টারঅ্যাকশন সক্ষম করা " চেকবক্সটি অক্ষম ছিল was সুতরাং, আমি কেবল এটি চালু করি। শুভকামনা।


7

আমার কেবল এটি ছিল এবং অতীতে আমার সাথে যেমনটি ঘটেছিল তেমন কার্যকর হয়নি কারণ পদ্ধতিটি যুক্ত করার চেষ্টা করার সময় আমি স্বতঃপূরণের দিকে মনোযোগ দিইনি এবং আমি আসলে বাস্তবায়ন শেষ করি tableView:didDeselectRowAtIndexPath: পরিবর্তে tableView:didSelectRowAtIndexPath:


7

আপনি প্রয়োগ করেছেন tableView:didSelectRowAtIndexPathএবং না তা নিশ্চিত করুনtableView:didDeSelectRowAtIndexPath

এটি কয়েকবারেরও বেশি সময় ধরে আমাকে অর্জন করেছে!


5

আমি জানি যে পুরানো এবং সমস্যাটি সমাধান হয়ে গেছে, তবে এর মধ্যে একটির মতো সমস্যা ছিল, আমি ভেবেছিলাম যে সমস্যাটি আমার কাস্টম ইউআইটিএবলভিউসিলের সাথে ছিল, তবে সমাধানটি সম্পূর্ণ আলাদা ছিল - আমি এক্সকোড পুনরায় চালু করি :) এবং তারপরে ঠিক আছে! প্রায় উইন্ডোজ :)


5

যদি আপনার টেবিল ভিউটি সম্পাদনা মোডে থাকে (যেমন। [tableView setEditing:YES animated:NO];), আপনাকে সেট করতে হবেtableView.allowsSelectionDuringEditing = YES;


4

আপনি যে অন্য একটি ভুল করতে পেরেছিলেন (যেমনটি আমি করেছি): আপনি যদি সেলটিতে সিগু সেট করেন, didSelectRowAtIndexPathতাকে বলা হয় না। পরিবর্তে ভিউ কন্ট্রোলারে আপনার সেগগুলি সেট করা উচিত।


4

এই উত্তরগুলির কোনওোটাই আমার পক্ষে কাজ করেনি। প্রায় এক ঘন্টা পরে, আমি খুব कपटी কিছু আবিষ্কার করলাম:

অন্য টেবিল ভিউয়ের একটি ঘরে আমার টেবিল ভিউ রয়েছে। আমি সিদ্ধান্ত নিয়েছি এমন একটি ঘেরযুক্ত ভিউ তৈরি করব যাতে অন্যান্য জিনিসের সাথে অভ্যন্তরীণ টেবিল ভিউ থাকে। আমি এই ভিউটিকে কন্টেন্টভিউ বলেছি এবং এটিকে xib এ আঁকিয়েছি।

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


4

আমার ক্ষেত্রে, আমি পরিবর্তনশীল উচ্চতা নিরূপণ TableViewএর SuperViewলোড সময় হয়। একটি ভুল গণনার কারণে, এর TableViewবাইরে অবস্থিত ছিল SuperView। অঙ্কনটি দুর্দান্ত TableViewছিল, তবে সমস্ত মিথস্ক্রিয়া অক্ষম ছিল (এবং didSelectRowAtIndexPathকখনই বলা হয় নি)। সনাক্ত করা খুব কঠিন, যেহেতু কোনও ভিজ্যুয়াল ইঙ্গিত নেই যে এটি TableView"অ্যাক্সেসযোগ্য" নয়।


4

আমার ক্ষেত্রে সমস্যাটি ছিল আমার একটি UITableViewCellসাবক্লাস ছিল এবং আমি এই দুটি পদ্ধতি প্রয়োগ করেছি: touchesBegan:withEvent:& touchesEnded:withEventস্পর্শে অভিনব অ্যানিমেশন পরিচালনা করতে। তবে আমি [super touchesBegan:touches withEvent:event];পদ্ধতির বিজ্ঞাপনটি যুক্ত করতে ভুলে গেছি[super touchesEnded:touches withEvent:event]; স্পর্শের ঘরের পিতামাতার সাথে অবহিত করার জন্য ।

কোডটি অনুসরণ করে আমার সমস্যার সমাধান করে:

-(void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{
    [super touchesBegan:touches withEvent:event];
    //blah blah blah
}

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    [super touchesEnded:touches withEvent:event];
    //rest of the code
}

1
এটি নিশ্চিত করতে পারে যে এটি আমার জন্য বিশেষ করে ওপি-র সমস্যা সৃষ্টি করেছে
জোশ ওল্ফ

4

আমার ক্ষেত্রে সমাধানটি হ'ল নীচের ফাংশনে কোনও হ'ল YES এ পরিবর্তন করা হয়নি।

আইওএস 9+

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

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