目标C,关于细胞分接传递数据

时间:2017-10-25 10:17:09

标签: ios objective-c uitableview

我的UITableView中有一个代表用户消息的单元格列表。

当我点击单元格时,我需要转到消息的详细页面。

如何将消息ID链接到单元格,以便将其传递给详细信息页面?

3 个答案:

答案 0 :(得分:1)

单击或点击表格视图单元格时,表格查看单元格委托方法 调用didSelectRowAtIndexPath方法。之后,您可以将消息ID传递给detailPage。

我有数组。在数组中我有很多Id。

我举个例子

ViewControlller.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
@property (strong, nonatomic) NSMutableArray *arrSampData;
@property (strong, nonatomic) IBOutlet UITableView *tblVwSample;
@end

ViewController.m

#import "ViewController.h"
@interface ViewController (){
}

@end

@implementation ViewController

@synthesize arrSampData;
@synthesize tblVwSample;

- (void)viewDidLoad {
    [super viewDidLoad];
     arrSampData = [[NSMutableArray alloc]initWithObjects:@"55260",@"55261",@"55262",@"55263",@"55264",nil];
  }

//UITableView Data Source methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [arrSampData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellid=@"cell";
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellid];
    if (cell==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];
    }

    cell.textLabel.text=arrSampData[indexPath.row];
    return cell;
}

//UITableView Delegate methods
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSString *strID =[arrSampData objectAtIndex:indexPath.row];
   .......//Pass this id to your required view controller
}

@end

答案 1 :(得分:0)

您可以使用cell.tag存储ID

答案 2 :(得分:0)

有几种方法可以解决您的问题。其中一个是使用模型进行tableview管理和自定义单元格,然后使用

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

另一个是使用细胞标签。您可以将详细消息分配给单元格标记,然后在

中显示
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
再次

方法。

或者您可以使用其他视图控制器来显示详细信息。为此,您应该执行segue并在视图控制器之间传递数据。