ঠিক আছে, আমি জানি এটি দেরী হয়ে গেছে তবে আমাকে এটি করতে হয়েছিল। আমি এখন কার্যক্ষম সমাধান অনুসন্ধান করে 10 ঘন্টা অতিবাহিত করেছি তবে পুরো উত্তর খুঁজে পাইনি। কিছু ইঙ্গিত পাওয়া গেছে তবে শুরুর পক্ষে বুঝতে অসুবিধা হয়েছে। সুতরাং আমাকে আমার 2 সেন্ট লাগাতে হবে এবং উত্তরটি সম্পূর্ণ করতে হবে।
যেমন উত্তরগুলির কয়েকটিতে পরামর্শ দেওয়া হয়েছে যে কেবলমাত্র কার্যকর সমাধানটি যা আমি প্রয়োগ করতে পেরেছি তা হ'ল টেবিল ভিউতে সাধারণ কোষ সন্নিবেশ করানো এবং তাদের বিভাগীয় শিরোনাম হিসাবে পরিচালনা করা, তবে এটি অর্জনের আরও ভাল উপায় এই কোষগুলিকে সন্নিবেশ করানো দ্বারা প্রতিটি বিভাগের সারি 0। এইভাবে আমরা এই কাস্টমটি অ-ভাসমান শিরোনামগুলি খুব সহজেই পরিচালনা করতে পারি।
UITableViewStylePlain স্টাইল সহ UITableView প্রয়োগ করুন।
-(void) loadView
{
[super loadView];
UITableView *tblView =[[UITableView alloc] initWithFrame:CGRectMake(0, frame.origin.y, frame.size.width, frame.size.height-44-61-frame.origin.y) style:UITableViewStylePlain];
tblView.delegate=self;
tblView.dataSource=self;
tblView.tag=2;
tblView.backgroundColor=[UIColor clearColor];
tblView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
যথারীতি শিরোনামফোর্ডহাইডারইনসেকশনটি প্রয়োগ করুন (আপনি নিজের যুক্তি ব্যবহার করে এই মানটি পেতে পারেন তবে আমি আদর্শ প্রতিনিধিদের ব্যবহার করতে পছন্দ করি)।
- (NSString *)tableView: (UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSString *headerTitle = [sectionArray objectAtIndex:section];
return headerTitle;
}
যথারীতি ইমপ্লিমেন্ট নম্বর অফসেকশনসনটেবলভিউ
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
int sectionCount = [sectionArray count];
return sectionCount;
}
যথারীতি সংখ্যাঅফ্রাউসআইনসেকশনটি প্রয়োগ করুন।
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int rowCount = [[cellArray objectAtIndex:section] count];
return rowCount +1; //+1 for the extra row which we will fake for the Section Header
}
উচ্চতারপরে 0.0f ফেরান
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 0.0f;
}
ভিউএফএইডারআইএনসেকশন বাস্তবায়ন করবেন না। শূন্য করার পরিবর্তে পদ্ধতিটি পুরোপুরি সরিয়ে ফেলুন।
উচ্চতার জন্যরোআউটআইডেক্সপথ। (Indexpath.row == 0) কিনা পরীক্ষা করুন এবং বিভাগ শিরোনামের জন্য পছন্দসই ঘরের উচ্চতা ফিরিয়ে দিন, অন্যথায় ঘরের উচ্চতা ফিরিয়ে দিন।
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row == 0)
{
return 80; //Height for the section header
}
else
{
return 70; //Height for the normal cell
}
}
এখন সেলফরআরএটিআইডেক্সপ্যাথে, (ইনডেক্সপথ.রো == 0) যাচাই করুন এবং সেকশনটি শিরোনামটি কোনওরূপে সেট না করে আপনি সেলটি প্রয়োগ করুন। আপনি যেমন সাধারণ কোষটি চান তেমনই ইএলএসই ঘরটি বাস্তবায়ন করুন।
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0)
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SectionCell"];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SectionCell"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone; //So that the section header does not appear selected
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SectionHeaderBackground"]];
}
cell.textLabel.text = [tableView.dataSource tableView:tableView titleForHeaderInSection:indexPath.section];
return cell;
}
else
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleGray; //So that the normal cell looks selected
cell.backgroundView =[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"CellBackground"]]autorelease];
cell.selectedBackgroundView=[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SelectedCellBackground"]] autorelease];
}
cell.textLabel.text = [[cellArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row -1]; //row -1 to compensate for the extra header row
return cell;
}
}
এখন উইলসিলেকরোআউট ইন্ডেক্সপথ বাস্তবায়ন করুন এবং সূচিপথ.রো == ০. যদি ফিরে আসুন তবে এটি যত্নশীল হবে যে বিভাগটি শিরোনাম সারিটির জন্য কখনই নির্বাচন করেছেন সরু র্যাটআউট ইন্ডেক্সপথটি বরখাস্ত হয় না।
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0)
{
return nil;
}
return indexPath;
}
এবং অবশেষে didSelectRowAtIndexPath- এ, (indexpath.row! = 0) পরীক্ষা করুন এবং এগিয়ে যান।
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row != 0)
{
int row = indexPath.row -1; //Now use 'row' in place of indexPath.row
//Do what ever you want the selection to perform
}
}
এটি দিয়ে আপনি কাজ শেষ করেছেন। আপনার কাছে এখন পুরোপুরি স্ক্রোলিং, অ-ভাসমান বিভাগের শিরোনাম।