如何对 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 行进行操作以及如何在其中添加添加披露指示符?的主要内容,如果未能解决你的问题,请参考以下文章

按多个数组对 Tableview 行进行排序

在手动创建的部分中对核心数据 tableView 行进行分组

iOS:如何使用按钮切换 Tableview 行?

使用字典中的键对对象数组进行排序

QML如何通过单击列的标题对tableView进行排序

在eclipse中使用github进行代码的上传操作以及如何建立分支