我正在创建一个地址簿的演示应用程序,它将人员信息保存在一个数组中,并将其显示在自定义表格单元格中。
第一个控制器将用户输入的信息保存在数组的文本字段中。 第二个控制器在自定义表格单元格中显示信息。 第三个控制器与第一个控制器相同,唯一的区别是它不会用于存储数据,而是用于更新数据。 我现在想要的是更新表格单元格数据。我创建了一个更新按钮,点击我正在转向第三个控制器。
当我点击更新按钮时,我想要的是在特定单元格中显示的信息,传递给第三个视图控制器文本字段。
我怎样才能做到这一点?
答案 0 :(得分:0)
我认为您将数据存储在某个数组或类似结构中。所以你可以像这样从中获取数据
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
MyThirdViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ThirdViewController"];
vc.dataToDisplay = self.myDataArray[indexPath.row];
}
然后在第三个视图控制器中,您将获得需要显示的数据。 例如,如果您知道新数组中的数据顺序,则可以填写像这样的文本字段
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//if your data is an array
self.firstTextField.text = self.dataToDisplay[0];
self.secondTextField.text = self.dataToDisplay[1];
//and so on
//if your data is a dictionary
self.firstTextField.text = self.dataToDisplay[@"name"]; //for string objects
self.secondTextField.text = [self.dataToDisplay[@"age"] integerValue]; //for integer values
}
答案 1 :(得分:0)
//in your third viewcontroller.h
@property NSString * textfieldname;
@property NSString * textfieldage;
//in your second viewcontroller.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([[segue identifier] isEqualToString:@"identifiername"]){
NSIndexPath *ip = [yourtablename indexPathForSelectedRow];
thirdviewcontrollerr *targetVC = [segue destinationViewController];
targetVC.textfieldname=[[arrayname objectatindex:ip.row]valueforkey:name];
targetVC.textfieldage=[[arrayname objectatindex:ip.row]valueforkey:age];
//in your thirdviewcontroller.m
nametextfield.text=_textfieldname;
agetextfield.text=_textfieldage;