2

我是新来的。我有一个带有 Tableview 的应用程序,当我按下一个单元格时,它会将我导航到一个 DetailView。现在的问题是我在 Detailview 中有一个 textField,我想在按下保存按钮后将用户键入的数据加载回原始单元格的 detailTextLabel 段。

我该怎么做呢?以下是我所拥有的:

细节视图控制器.m

//save button
-(IBAction) SendTextFieldtoViewController:(id)sender { 

    NSString *grabKeyedData = self.inputField.text;
    ViewController *mainController =[self.storyboard instantiateViewControllerWithIndentfier:@"mainController"];

    [mainController GrabbedKeyData: grabKeyedData];
}

视图控制器.m

-(void) GrabbedKeyData:(NSString *)text{

    grabData = text;

    NSLog(@" data: %@",text);
    [tableView reloadData];
}


-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {

.....

  if(grabData == nil){
      [[cell detailTextLabel] setText:@"no data"];
  }else{
      [[cell detailTextLabel] setText:grabData];
  }

我已经设法将数据传递给 -(void) GrabbedKeyData,我可以从 NSLog 读取传递的数据。但是当我返回 ViewController 时,该表似乎没有更新。

4

2 回答 2

1

我认为问题可能是两件事之一。在您的问题中,您说“返回到 ViewController”,但您不会回到您开始使用的那个,而是创建一个新的。如果您通过从情节提要中的 ViewController 推送到细节控制器,那么这不是这样做的方法。您需要获取对 ViewController 原始实例的引用,或使用协议(这是 Apple 推荐的将数据发送回控制器的标准方式)。有几种方法可以获取该引用,例如,您可以在细节控制器中拥有一个名为 mainController 的属性,并且 ViewController 可以在推送细节控制器时将自己设置为该属性的值。

另一个可能的问题是一个简单的问题——表格使用的是普通单元格,而不是具有 detailTextLabel 的单元格。确保您在 IB 中设置了正确类型的单元格。

于 2013-02-16T17:21:44.540 回答
0
-(IBAction) SendTextFieldtoViewController:(id)sender 
{ 
    NSString *grabKeyedData = self.inputField.text;
    [mainController GrabbedKeyData: grabKeyedData];
    ViewController *mainController =[self.storyboard instantiateViewControllerWithIndentfier:@"mainController"];
}


-(void) GrabbedKeyData:(NSString *)text
{
  self.keyDataArray = [[NSMutableArray alloc] initWithObjects:text, nil];
  NSLog(@" data: %@",text);
  [tableView reloadData];
}

-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {

.....

  NSString *grabbedName = [keyDataArray objectAtIndex:0];
  NSLog(@" cell text is :%@",grabbedName);

  [[cell detailTextLabel] setText:grabbedName];
}

您仅将 NSString 对象存储到 array.so 中,它存储在第 0 个索引处的数组中。

于 2013-02-16T13:36:21.547 回答