আমি প্রোগ্রামক্রমে কীভাবে একটি UITableView
সারি নির্বাচন করব যাতে এটি
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
মৃত্যুদণ্ড কার্যকর হয়? selectRowAtIndexPath
কেবল সারিটি হাইলাইট করবে।
আমি প্রোগ্রামক্রমে কীভাবে একটি UITableView
সারি নির্বাচন করব যাতে এটি
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
মৃত্যুদণ্ড কার্যকর হয়? selectRowAtIndexPath
কেবল সারিটি হাইলাইট করবে।
উত্তর:
রেফারেন্স ডকুমেন্টেশন থেকে :
এই পদ্ধতিতে কল করার কারণে প্রতিনিধি কোনও বার্তা
tableView:willSelectRowAtIndexPath:
বাtableView:didSelectRowAtIndexPath:
বার্তা গ্রহণ করে নাUITableViewSelectionDidChangeNotification
এবং পর্যবেক্ষকদের কাছে বিজ্ঞপ্তি প্রেরণ করে না ।
আমি যা করবো তা হ'ল:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self doSomethingWithRowAtIndexPath:indexPath];
}
এবং তারপরে, আপনি যেখান থেকে নির্বাচন করুনআরএন্টইন্ডেক্সপথ কল করতে চেয়েছিলেন, আপনি পরিবর্তে doSomethingWithRowAtIndexPath কল করুন। এর উপরে, আপনি যদি ইউআই প্রতিক্রিয়াটি ঘটতে চান তবে আপনি অতিরিক্তভাবে নির্বাচিত রওএন্টেক্সপথকেও কল করতে পারেন।
জানুস যেমন বলেছিল:
এটিকে (-StelectRowAtIndexPath: অ্যানিমেটেড: স্ক্রোলপজিশন :) পদ্ধতি কল করার ফলে প্রতিনিধি একটি টেবিল প্রাপ্ত করে না: ভিউসিলিটারআরএটআইডেক্সপথ: বা টেবিলভিউ: didSelectRowAtIndexPath: বার্তা পাঠায় বা এটি ইউআইটিএলভিউসিলিভিংডিশন-সংক্রান্ত বিজ্ঞপ্তিগুলি প্রেরণ করবে না।
সুতরাং আপনাকে কেবল delegate
নিজেই পদ্ধতিটি কল করতে হবে ।
উদাহরণ স্বরূপ:
সুইফট 3 সংস্করণ:
let indexPath = IndexPath(row: 0, section: 0);
self.tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableViewScrollPosition.none)
self.tableView(self.tableView, didSelectRowAt: indexPath)
উদ্দেশ্য সংস্করণ:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath
animated:YES
scrollPosition:UITableViewScrollPositionNone];
[self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
সুইফট ২.৩ সংস্করণ:
let indexPath = NSIndexPath(forRow: 0, inSection: 0);
self.tableView.selectRowAtIndexPath(indexPath, animated: false, scrollPosition: UITableViewScrollPosition.None)
self.tableView(self.tableView, didSelectRowAtIndexPath: indexPath)
ইউআইটিএবলভিউ'র নির্বাচন করা রোআউটআইডেক্সপথ: অ্যানিমেটেড: স্ক্রোলপোজিশন: কৌশলটি করা উচিত।
কেবল UITableViewScrollPositionNone
স্ক্রোলপোজিশনের জন্য পাস করুন এবং ব্যবহারকারী কোনও চলন দেখতে পাবেন না।
আপনি নিজে অ্যাকশনটি চালাতে সক্ষম হবেন:
[theTableView.delegate tableView:theTableView didSelectRowAtIndexPath:indexPath]
আপনার পরে selectRowAtIndexPath:animated:scrollPosition:
হাইলাইটটি ঘটবে পাশাপাশি কোনও যুক্ত যুক্তিও।
আপনি যদি কিছু সারি নির্বাচন করতে চান তবে এটি আপনাকে সহায়তা করবে
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[someTableView selectRowAtIndexPath:indexPath
animated:NO
scrollPosition:UITableViewScrollPositionNone];
এটি সারিটিও হাইলাইট করবে। তারপর প্রতিনিধি
[someTableView.delegate someTableView didSelectRowAtIndexPath:indexPath];
সুইফট 3/4/5 সমাধান
সারি নির্বাচন করুন
let indexPath = IndexPath(row: 0, section: 0)
tblView.selectRow(at: indexPath, animated: true, scrollPosition: .bottom)
myTableView.delegate?.tableView!(myTableView, didSelectRowAt: indexPath)
ডি-সিলেক্ট সারি
let deselectIndexPath = IndexPath(row: 7, section: 0)
tblView.deselectRow(at: deselectIndexPath, animated: true)
tblView.delegate?.tableView!(tblView, didDeselectRowAt: indexPath)
আইপ্যাড এবং আইফোন প্ল্যাটফর্মগুলির জন্য দুটি পৃথক পদ্ধতি রয়েছে, সুতরাং আপনার উভয়টি প্রয়োগ করা দরকার:
segue।
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
// Selection handler (for horizontal iPad)
[self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
// Segue (for iPhone and vertical iPad)
[self performSegueWithIdentifier:"showDetail" sender:self];
একটি টেবিল সারি নির্বাচন করতে এই বিভাগটি ব্যবহার করুন এবং একটি বিলম্বের পরে প্রদত্ত সেগটি সম্পাদন করুন।
আপনার viewDidAppear
পদ্ধতির মধ্যে এটি কল করুন :
[tableViewController delayedSelection:withSegueIdentifier:]
@implementation UITableViewController (TLUtils)
-(void)delayedSelection:(NSIndexPath *)idxPath withSegueIdentifier:(NSString *)segueID {
if (!idxPath) idxPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self performSelector:@selector(selectIndexPath:) withObject:@{@"NSIndexPath": idxPath, @"UIStoryboardSegue": segueID } afterDelay:0];
}
-(void)selectIndexPath:(NSDictionary *)args {
NSIndexPath *idxPath = args[@"NSIndexPath"];
[self.tableView selectRowAtIndexPath:idxPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
if ([self.tableView.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)])
[self.tableView.delegate tableView:self.tableView didSelectRowAtIndexPath:idxPath];
[self performSegueWithIdentifier:args[@"UIStoryboardSegue"] sender:self];
}
@end