- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
self.data= [self.nameList objectAtIndex:indexPath.row];
self.data= [self.rollList objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"DetailVC" sender:self];
}
我在自定义单元格中显示了学生的姓名和代码。现在,当我选择一行时,我想将这些数据传递给另一个UIViewController
并显示在标签中。因为我有一个名为'Name'的NSObject
类型文件,我有一个名为'data'的变量,它的类型为'Name'。现在,这是我didSelectRowAtIndexPath
中的代码,nameList
与rollList
重叠,存储在同一个变量self.data
中。如果删除了rollList
行,那么效果很好。但是当我在rollList
中存储self.data
时,它会与其他人重叠。
其中,self.nameList
是NSMutableArray
类型的变量,其中包含学生姓名,类似地,self.rollList
包含学生名单。
以下是从segue传递数据的代码。这里DetailVC
是destinationViewController
,vc.data
是'Name'类型的变量,self.data
也是同一类型的变量。
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"DetailVC"]){
DetailVC *vc = (DetailVC *) segue.destinationViewController;
vc.data = self.data;
}
}
答案 0 :(得分:3)
重叠是至关重要的事情。
根据您的情况,您的NSObject type file (Name) you have to add two variable
NSNumber *rollNo;
NSString *name;
之后
- 更新 -
@interface TableVC : UIViewController {
Name *data;
}
-(void)viewDidLoad {
data = [[Name alloc] init]
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
self.data.name = [self.nameList objectAtIndex:indexPath.row];
self.data.rollNo = [self.rollList objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"DetailVC" sender:self];
}
然后
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"DetailVC"]){
DetailVC *vc = (DetailVC *) segue.destinationViewController;
vc.data = self.data;
}
}
------详情VC ---
@property (nonatomic, strong) Name *data;
-(void)viewDidLoad {
self.labelRollNo.text = self.data.rollNo;
self.labelName.text = self.data.name;
}
答案 1 :(得分:0)
试试这种方式
@interface ViewController ()
{
NSString *name;
NSString *roll;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
name= [self.nameList objectAtIndex:indexPath.row];
roll= [self.rollList objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"DetailVC" sender:self];
}
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"DetailVC"]){
DetailVC *vc = (DetailVC *) segue.destinationViewController;
vc.name = name;
vc.roll = roll;
}
}
在DetailVC中创建两个NSString
名称和卷属性
DetailVC.h
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *roll;