【问题标题】:Unable to pushViewController after dismissing present view controller关闭当前视图控制器后无法 pushViewController
【发布时间】:2013-11-28 06:26:26
【问题描述】:

我有FavouriteViewController,其中我有一个单击按钮时的按钮,我正在呈现一个名为LoginViewController 的视图(使用故事板)。

在此页面上(LoginViewController),我再次有按钮,单击该按钮我将关闭我的模态视图控制器,在关闭后我再次返回FavouriteViewController,当我尝试推送我的视图时,现在在此页面上它不推动的控制器。

这是我的代码 sn-p,

----- 第 1 部分 -----

FavoriteViewController.m

- (IBAction)LoginClicked:(id)sender {
      NSLog(@"--- Navigated to LoginViewController ---");
    //Navigates to `LoginViewController` using storyboard..
}

LoginViewController.m

- (IBAction)LoginViaFb:(id)sender{

         NSLog(@"--- Inside LoginViafb ---");
         [self dismissViewControllerAnimated:YES completion:NULL];

         FavoriteTabViewController *fav=[[FavoriteTabViewController alloc] init];
         [fav Loginsuccessfull];
}

FavoriteViewController.m

-(void)Loginsuccessfull{
    NSLog(@"--- Inside Loginsuccessfull ---");

    UserDetailsViewController *user=[[UserDetailsViewController alloc] init];
    [self.navigationController pushViewController:user animated:NO];
}

我的日志显示:

--- Navigated to LoginViewController ---
--- Inside LoginViafb ---
--- Inside Loginsuccessfull ---

请帮忙,提前致谢。

----- 第 2 部分 -----:

** 我也试过了:**

我的 LoginViewController.m

中的代码
- (IBAction)LoginViaFb:(id)sender{

         NSLog(@"--- Inside LoginViafb ---");
         [self dismissViewControllerAnimated:YES completion:NULL];

         FavoriteTabViewController *fav=[[FavoriteTabViewController alloc] init];
         fav.GoLogin=@"some values"; 
}

FavoriteViewController.m

-(void)viewDidAppear:(BOOL)animated{
    NSLog(@"some values --- %@",some values);

     if ([GoLogin isEqualToString:@"some values"]) {
           NSLog(@"Method called");
        [self.navigationController pushViewController:[[UserDetailsViewController alloc] init] animated:NO];
    }

} 

但还是没用,显示some values --- null

【问题讨论】:

  • xcode 显示任何警告?
  • 确实得到任何异常或错误。你使用的是哪个版本的xcode
  • 我的日志中没有任何错误,我使用的是 xocde 5.0

标签: ios iphone objective-c ipad pushviewcontroller


【解决方案1】:

这就是我对你说的。

FavoriteViewController.m

- (IBAction)LoginClicked:(id)sender {
    NSLog(@"--- Navigated to LoginViewController ---");

    loginVcObc.logindelegate = self;    
}

 #pragma mark LoginDelegate

 - (void)loginSuccessfull {
        UserDetailsViewController *user=[[UserDetailsViewController alloc] init];
       [self.navigationController pushViewController:user animated:NO];
   }

LoginViewController.h

#import <UIKit/UIKit.h>

@protocol LoginDelegate;    
@interface LoginViewController : UIViewController

@property (assign) id <LoginDelegate> logindelegate;

@end

@protocol LoginDelegate <NSObject>

- (void)loginSuccessfull;

@end

LoginViewController.m

#import "LoginViewController.h"

@implementation LoginViewController

@synthesize logindelegate;

- (IBAction)LoginViaFb:(id)sender{

     NSLog(@"--- Inside LoginViafb ---");
    if (self.logindelegate) {
       [self.logindelegate loginSuccessfull];
  }
    [self dismissViewControllerAnimated:YES completion:NULL];


}

【讨论】:

  • 老兄如果我不初始化那我怎么称呼它?-(void)Loginsuccessfull
  • 我告诉过你可以在这里使用委托概念。使用一种方法 loginsuccessfull 在 LoginViewController 中声明协议,并将该委托设置为 FavoriteTabViewController。在关闭 LoginViewController 之前调用 LoginViaFb 此方法时,调用该委托方法。
  • @Krunal 我写了 concep,你可以照着做。如果无法理解,请告诉我。
  • 是的,我不明白。你能告诉我我应该写什么代码吗?
  • 我在 LoginViewController 中写道,-(void)someMethod:(Protocol*)someArgument;,但是如何将这个委托设置为 FavoriteTabViewController?
猜你喜欢
  • 2019-05-30
  • 2017-07-09
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 2020-04-12
  • 1970-01-01
相关资源
最近更新 更多