1

我正在做一个小应用程序,我正在使用 UISplitVIewController,我正在尝试将 UITable 单元格文本推送到详细视图并将其显示在 UITextField 中。当我使用 NSLog 对其进行测试时,我设法很好地推送了字符串,但是当我应用到 UITextField 时,它不知道为什么我的方法在这里显示:(我正在使用情节提要这样做)

-(void)pushModuleName:(NSString*)moduleName
{
    self.Lv4ModuleTitleTextField.text = moduleName;
    NSLog(@"name pushed%@",moduleName);
}

不知道为什么这不起作用。

[更新]

UITableViewController.m(调用方法的地方)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *selectedModule = [NSString stringWithFormat:@"%@",[_numberOfRows objectAtIndex:indexPath.row]];

    Lv4GradeViewController *lv4 = [[Lv4GradeViewController alloc] initWithNibName:nil bundle:nil];
    [lv4 pushModuleName:selectedModule];

}
4

2 回答 2

2

您正在使用以下代码创建 Lv4GradeViewController 的新实例,但没有包含文本字段的 XIB 文件:

Lv4GradeViewController *lv4 = [[Lv4GradeViewController alloc] initWithNibName:nil bundle:nil];

我建议您使用情节提要instantiateViewControllerWithIdentifier方法实例化 Lv4GradeViewController:

Lv4GradeViewController *lv4 = [self.storyboard instantiateViewControllerWithIdentifier:@"IdentifierName"];

并且记得将 Lv4GradeViewController 的情节提要 ID 设置为与情节提要中的IdentifierName相同。

设置视图控制器的情节提要 ID

于 2013-05-20T04:28:18.527 回答
1

问题是您没有获得对屏幕上的 Lv4GradeViewController 的引用,而是使用 alloc init 创建了一个新的。拆分视图控制器有一个 viewControllers 数组,索引 0 处的控制器是主控制器,索引 1 处的控制器是细节控制器。所以,didSelectRowAtIndexPath 方法应该是这样的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *selectedModule = [NSString stringWithFormat:@"%@",[_numberOfRows objectAtIndex:indexPath.row]];
    Lv4GradeViewController *lv4 = self.splitViewController.viewControllers[1];
    [lv4 pushModuleName:selectedModule];
}
于 2013-05-20T06:55:57.313 回答