点击第二视图控制器中的“注销”按钮时,如何使第一视图控制器的文本域中的文本消失?

时间:2017-02-09 06:46:30

标签: objective-c

- (IBAction)loginButtonAction:(id)sender
{
    [self.navigationController popToViewController:   
[self.navigationController.viewControllers         
objectAtIndex:self.navigationController.viewControllers.count -2] 
animated:YES];

}

这是我在第二视图控制器中的注销代码,我想删除文本
    在Logout上单击用户名和密码的登录屏幕     按钮..请有人帮助我吗?

2 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标。

  1. 使用委托从第二个视图控制器向第一个viewcontroller传递有关logout事件的消息,并在传递的消息实现中重置视图。

  2. 我建议您将第二个视图控制器设置为rootViewController,而不是将登录视图保留为导航堆栈的一部分。您可以通过第二个视图控制器将登录控制器显示为模态viewController。

答案 1 :(得分:1)

您可以使用委托或NSNotification。

代表。

让你有两个View Controller ..一个是ViewController和其他NextViewController,你想从NextViewController注销并清除ViewController中的文本。

步骤:在NextViewController.h中

#import <UIKit/UIKit.h>

@protocol clearTextField <NSObject>
-(void)clearTextFieldInPreviousController: (NSString *)string;

@end

@interface NextViewController : UIViewController
@property (assign,nonatomic) id delegate;

@end

在nextViewController.m

- (IBAction)loginButtonAction:(id)sender
{
    [_delegate clearTextFieldInPreviousController:@""];
    [self.navigationController popToViewController:   
[self.navigationController.viewControllers         
objectAtIndex:self.navigationController.viewControllers.count -2] 
animated:YES];

}

在你的ViewController.m中

-(void)clearTextFieldInPreviousController: (NSString *)string{
    NSLog(@"Fired");
    self.label.text =@"";
}

//在转到下一个控制器之前注意。您必须设置代理。

– (IBAction)goNextButtonAction:(id)sender {
    NextViewController *acontollerobject=[self.storyboard instantiateViewControllerWithIdentifier:@"NVCSID"];

    acontollerobject.delegate=self; // protocol listener
    [self.navigationController pushViewController:acontollerobject animated:YES];
}

您可以访问Answer by kenorb

的此链接