0

我有一个我从我的视图控制器实现文件之一调用的 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 获取用户输入值的最佳方法?

4

1 回答 1

0

几个建议

为了安全起见,与其直接从 function 返回的数组中获取 lastObject loadNibNamed:owner:options:,不如为您的视图遍历数组,然后选择正确的数组。

viewWithTag也不推荐使用。我个人对此有过一些不好的经历。Apple 在内部维护一些视图的标签。因此,如果您的标签与此重叠,则解决起来可能会非常混乱。

相反,您可以为控制器中的文本字段维护 IBOutlets,使用它可以轻松获取数据。

于 2013-06-16T15:28:15.107 回答