如何在iOS中按下按钮重置ViewController

如何在iOS中按下按钮重置ViewController,ios,iphone,swift3,Ios,Iphone,Swift3,我的应用程序有一个ViewController,由多个文本字段和自定义UI元素组成,这些元素以“提交”和“重置”按钮的形式排列 我想在用户单击submit按钮时重置所有文本字段和自定义UI元素,这样用户就会感觉到同一表单再次打开 我尝试在单击“提交”按钮时调用ViewDidLoad()和setNeedsDisplay(),但用户以前填写的数据保持原样 请帮忙 只需将所有文本字段的文本设置为空字符串(text值)。没有神奇的功能来清理视图中的所有内容 唯一的另一种解决方案是再次实际显示ViewCo

我的应用程序有一个ViewController,由多个文本字段和自定义UI元素组成,这些元素以“提交”和“重置”按钮的形式排列

我想在用户单击submit按钮时重置所有文本字段和自定义UI元素,这样用户就会感觉到同一表单再次打开

我尝试在单击“提交”按钮时调用ViewDidLoad()和setNeedsDisplay(),但用户以前填写的数据保持原样


请帮忙

只需将所有文本字段的文本设置为空字符串(
text
值)。没有神奇的功能来清理视图中的所有内容


唯一的另一种解决方案是再次实际显示ViewController,但这可能不是您想要的,因为这会导致开销,并且您可能会在屏幕上看到一些切换。

如果您以编程方式对文本字段和其他一些对象进行编码,通过在预定义的方法中添加所有UI代码,您可以每次都刷新viewController:-(void)viewwilldisease:(BOOL)animated{},您应该通过添加此代码删除所有self.view元素。 [self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]

视图中的代码将如下所示


我更愿意再次显示ViewController,而不是手动清除所有文本字段。但问题是,我使用的是导航控制器,所以如果我再次按下同一个ViewController,那么当用户单击“上一步”时,他将看到先前填充的视图。如何弹出当前视图控制器并再次推送相同的视图控制器?您可以在再次显示另一个实例之前从导航堆栈中弹出旧的ViewController(使用
popViewController(动画:)
)或者,如前面所讨论的,您可以更改“后退”按钮的行为,我建议您手动清除文本字段。如果您使用IB,则存在IBOutletCollections,因此您可以使用函数轻松地迭代集合。或者,您可以迭代UIViewController的子视图,检查类是否为UITextField类型,如果是,则重置它。切勿直接调用
viewDidLoad
或其他生命周期方法。下面添加了我的答案。这可能对你有帮助@ujjwal
-(void)viewWillAppear:(BOOL)animated{
[self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

// Codes for User Interface here 

}