推送一个字符串并在 UITextField 中显示
Posted
技术标签:
【中文标题】推送一个字符串并在 UITextField 中显示【英文标题】:Push a string and display in a UITextField 【发布时间】:2013-05-20 03:33:17 【问题描述】:我正在做一个小应用程序,我正在使用 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];
【问题讨论】:
您确认self.Lv4ModuleTitleTextField
不是nil
?
@rmaddy 不,我应该在哪里做这个
在您的 pushModuleName:
方法中。
@rmaddy 我不明白这会有什么影响
在您的pushModuleName:
方法中,记录self.Lv4ModuleTitleTextField
。很可能您从未正确设置此属性,因此设置其文本的调用不会执行任何操作。
【参考方案1】:
您正在使用以下代码创建 Lv4GradeViewController 的新实例,但没有包含文本字段的 XIB 文件:
Lv4GradeViewController *lv4 = [[Lv4GradeViewController alloc] initWithNibName:nil bundle:nil];
我建议您使用情节提要instantiateViewControllerWithIdentifier
方法实例化 Lv4GradeViewController:
Lv4GradeViewController *lv4 = [self.storyboard instantiateViewControllerWithIdentifier:@"IdentifierName"];
并记得将 Lv4GradeViewController 的情节提要 ID 设置为与情节提要中的 IdentifierName 相同。
【讨论】:
我已经链接了我的文本字段并合成了它,但它只是没有设置文本我不知道为什么 IdentifierName 应该是什么 @oneArled:它可以是你想要的任何东西,但你需要在故事板中设置它。请查看我的更新答案。 我这样做了,但我的文本字段仍然返回 null 我不明白 这是不正确的。拆分视图控制器时,详细视图控制器已经实例化,因此您只需要获取对它的引用,而不是创建另一个。【参考方案2】:问题是您没有获得对屏幕上的 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];
【讨论】:
以上是关于推送一个字符串并在 UITextField 中显示的主要内容,如果未能解决你的问题,请参考以下文章
验证 UITextField 并在错误时显示 UIAlertView
如何在uitextfield而不是键盘中显示pickerview?