如何对 tableview 行进行操作以及如何在其中添加添加披露指示符?
Posted
技术标签:
【中文标题】如何对 tableview 行进行操作以及如何在其中添加添加披露指示符?【英文标题】:How to give action to tableview row and how to add Add disclosure indicator in it? 【发布时间】:2017-10-03 09:32:21 【问题描述】:这是我的班级的描述。
首先参考上图。
所以在这里,我创建了一个按钮。(参见图像中的场景 1)单击按钮后,将出现一个表格视图(参见图像中的场景 2)。如果我单击任何单元格,则该表视图单元格值将显示在该按钮文本上(请参见图像中的场景 3)。这里我没有对任何表格视图单元格进行任何操作。
现在,我对这些行进行了操作(仅对索引 0 进行测试)。当我单击 Uitableview 1 上的 uitableviewcell 时,它将显示另一个 tableview 2 和以前的 table view 隐藏。见下图。
所以在这个 tableview 2 中,我想采取行动,即当我点击第二个表格的 tableview 行中的任何行时,example:假设我点击了 Arjun,那么按钮标签需要由 Arjun 更改并且这个 tableview 必须隐藏,或者如果像 Karan 一样单击 tableview 行,然后在一个弹出窗口中我想像选择 Karan 一样显示。
简而言之,我想知道如何对第二个 tableview 行执行操作以及如何向第一个 table view 添加披露指示符。
ViewCotroller.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UIButton *button;
@property (weak, nonatomic) IBOutlet UITableView *tableview1;
@property (weak, nonatomic) IBOutlet UITableView *tableview2;
@property(strong,nonatomic)NSArray *arr1;
@property(strong,nonatomic)NSArray *arr2;
- (IBAction)buttonAction:(id)sender;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.arr1=[[NSArray alloc]initWithObjects:@"One",@"Two",@"Three",@"Four",@"Five", nil];
self.arr2=[[NSArray alloc]initWithObjects:@"Arjun",@"Karan",@"Amar", nil];
self.tableview1.delegate=self;
self.tableview1.dataSource=self;
self.tableview2.delegate=self;
self.tableview2.dataSource=self;
self.tableview1.hidden=YES;
self.tableview2.hidden=YES;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
NSInteger rows;
if(tableView == _tableview1) rows = [_arr1 count];
if(tableView == _tableview2) rows = [_arr2 count];
return rows;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *simple=@"SampleIndentifier";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:simple];
if(cell==nil)
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simple];
// cell.textLabel.text=[self.arr1 objectAtIndex:indexPath.row];
if(tableView == _tableview1)
cell.textLabel.text = [self.arr1 objectAtIndex:indexPath.row];
if(tableView == _tableview2)
cell.textLabel.text = [self.arr2 objectAtIndex:indexPath.row];
return cell;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell= [self.tableview1 cellForRowAtIndexPath:indexPath];
[self.button setTitle:cell.textLabel.text forState:UIControlStateNormal];
self.tableview1.hidden=YES;
if(tableView == _tableview1)
if(indexPath.row==0)
self.tableview1.hidden=YES;
self.tableview2.hidden=NO;
if(indexPath.row==0)
// cell.textLabel.text = [self.arr2 objectAtIndex:indexPath.row];
// cell.textLabel.text = [self.arr2 objectAtIndex:indexPath.row];
//cell.textLabel.text = [self.arr1 objectAtIndex:indexPath.row];
//self.tableview2.hidden=YES;
if(tableView == _tableview2)
cell.textLabel.text = [self.arr2 objectAtIndex:indexPath.row];
- (IBAction)buttonAction:(id)sender
if(self.tableview1.hidden==YES)
self.tableview1.hidden=NO;
else
self.tableview1.hidden=YES;
@end
【问题讨论】:
尝试使用 NSLog 调试并打印单元格索引并与表或行匹配.. 完全满足您的条件.. 然后您可以找到解决方案... 因为有问题.. 我无法完全了解您的情况。 如何在第一个表格视图中添加披露指示 ==> 转到情节提要 --> 选择您的单元格 --> 附件 --> 选择披露指示 我的第一个问题得到了解决方案。只剩下一件事,那就是披露指标。 @Nirav 根据您的回答,我遵循了但问题是我被带到了 tableview 而不是 tableview 单元格。 Sp 我怎样才能添加该披露指标?有没有办法以编程方式添加? 试试这个..cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
【参考方案1】:
检查以下答案..!
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell= [self.tableview1 cellForRowAtIndexPath:indexPath];
[self.button setTitle:cell.textLabel.text forState:UIControlStateNormal];
self.tableview1.hidden=YES;
if(tableView == _tableview1)
if(indexPath.row==0)
self.tableview1.hidden=YES;
self.tableview2.hidden=NO;
if(indexPath.row==0)
// cell.textLabel.text = [self.arr2 objectAtIndex:indexPath.row];
// cell.textLabel.text = [self.arr2 objectAtIndex:indexPath.row];
//cell.textLabel.text = [self.arr1 objectAtIndex:indexPath.row];
//self.tableview2.hidden=YES;
if(tableView == _tableview2)
cell.textLabel.text = [self.arr2 objectAtIndex:indexPath.row];
【讨论】:
以上是关于如何对 tableview 行进行操作以及如何在其中添加添加披露指示符?的主要内容,如果未能解决你的问题,请参考以下文章