我有一个xib文件,我从我的一个视图控制器实现文件中调用。以下是我用于实例化并将视图控制器推送到导航堆栈的代码: -
upsertView=[[[NSBundle mainBundle] loadNibNamed:@"InsertView" owner:self options:NULL] lastObject];
UIViewController *vc=[[UIViewController alloc] init];
vc.view=upsertView;
[self.navigationController pushViewController:vc animated:NO];
xib视图包含三个文本文件,用户可以在其中输入其值并进行保存。此保存连接到同一控制器实现文件中的操作(从我调用xib的位置)。这是行动: -
-(void) saveValues
{
UIViewController *vc=[[self.navigationController viewControllers] lastObject];
NSString *valID = ((UITextField *)[vc.view viewWithTag:23]).text;
NSLog(@"%@",valID);
}
如果以上是从xib获取用户输入值的最佳方法,请告诉我吗?
答案 0 :(得分:0)
一些建议
只是为了更安全一面,而不是直接从函数loadNibNamed:owner:options:
返回的数组中获取lastObject,最好为您的视图迭代数组,然后选择正确的数组。
也不建议使用viewWithTag
。我个人对此有过一些不好的经历。 Apple内部维护了一些视图的标签。因此,如果您的标签与之重叠,则解决它可能会非常混乱。
相反,您可以为控制器中的文本字段维护IBOutlet,使用它可以轻松获取数据。