2017-02-09 44 views
1
- (IBAction)loginButtonAction:(id)sender 
{ 
    [self.navigationController popToViewController: 
[self.navigationController.viewControllers   
objectAtIndex:self.navigationController.viewControllers.count -2] 
animated:YES]; 

} 

这在第二视图控制器我的注销代码,我要上登出点击 按钮时,在用户名和密码的登录屏幕删除文本
。请可以有人帮助我吗?如何在第二个视图控制器中的Logout按钮上点击第一个视图控制器的文本框时消除文本?

回答

1

您可以为此使用委托或NSNotification。

代表。

让你有两个视图控制器。一个是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 [email protected]""; 
} 

//注意才去下一个控制器。你将不得不设置委托。

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

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

你可以访问这个链接Demo Example

1

有许多方法可以实现这一点。

  1. 使用委托将消息传递给第一个viewcontroller关于第二个视图控制器的注销事件并重置传递的消息实现中的视图。

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

+0

感谢金正日会尽力的。 – Megha

相关问题