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

} 

これは、第二ビューコントローラの私のログアウトコードですが、私はログアウト ボタンをクリックしたときに、ユーザー名とパスワードのログイン画面にテキスト
を削除したい。..いくつかのいずれかが私を助けることができるしてください?2番目のビューコントローラの[ログアウト]ボタンをクリックすると、1番目のビューコントローラのテキストフィールドにテキストが表示されなくなりますか?

答えて

1

これには代理人またはNSNotificationを使用できます。

代表者。

ViewControllerと2つのNextViewControllerがあり、NextViewControllerからログアウトしてViewControllerのテキストを消去したい場合は、View Controllerが2つあります。

ステップ:nextViewController.m

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

} 

でNextViewController.h

#import <UIKit/UIKit.h> 

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

@end 

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

@end 

にし、次のコントローラに行く前に、あなたの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. 2番目のビューコントローラをrootViewControllerとして作成し、ログインビューをナビゲーションスタックの一部として保持しないことをお勧めします。 2番目のView Controller上で、モーダルviewControllerとしてログインコントローラを表示することができます。

+0

ありがとうILがそれをしようとするために、あなたは、このリンクを訪問することができます。 – Megha

関連する問題