Ios 使用两个导航控制器推送视图控制器

Ios 使用两个导航控制器推送视图控制器,ios,uinavigationcontroller,pushviewcontroller,Ios,Uinavigationcontroller,Pushviewcontroller,我有一个应用程序,我推一个模态视图控制器。它工作得很好,但我担心我没有以最正确的方式编码它。我举例说明了两个导航控制器,这对我来说似乎有点不可靠 基本上,我创建了一个包含3个选项卡的选项卡栏控制器,然后将其中一个选项卡/视图控制器作为根。后来,当用户触摸段落中的特定单词时,我(在核心文本上使用一些自制的标记)弹出一个视图控制器。按下的视图控制器有一个后退按钮,工作正常,应用程序似乎正常 就像我说的,这一切都是可行的,但我似乎在这里循环编码。这是正确的吗 AppDelegate.h #import

我有一个应用程序,我推一个模态视图控制器。它工作得很好,但我担心我没有以最正确的方式编码它。我举例说明了两个导航控制器,这对我来说似乎有点不可靠

基本上,我创建了一个包含3个选项卡的选项卡栏控制器,然后将其中一个选项卡/视图控制器作为根。后来,当用户触摸段落中的特定单词时,我(在核心文本上使用一些自制的标记)弹出一个视图控制器。按下的视图控制器有一个后退按钮,工作正常,应用程序似乎正常

就像我说的,这一切都是可行的,但我似乎在这里循环编码。这是正确的吗

AppDelegate.h

#import <Foundation/Foundation.h>

@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>
{
    UIWindow *window;
    UITabBarController *tabBarController;
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarController;
@end
#import <UIKit/UIKit.h>
#import "JSCoreTextView.h"
#import "PopupViewController.h"

@class JSTwitterCoreTextView;

@interface ReadingViewController : UIViewController <JSCoreTextViewDelegate>
{
    JSTwitterCoreTextView *_textView;
    UIScrollView *_scrollView;
}
@end
ViewController3.h

#import <Foundation/Foundation.h>

@interface AppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>
{
    UIWindow *window;
    UITabBarController *tabBarController;
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarController;
@end
#import <UIKit/UIKit.h>
#import "JSCoreTextView.h"
#import "PopupViewController.h"

@class JSTwitterCoreTextView;

@interface ReadingViewController : UIViewController <JSCoreTextViewDelegate>
{
    JSTwitterCoreTextView *_textView;
    UIScrollView *_scrollView;
}
@end
来自PopupViewController.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    ViewController2 *viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
    ViewController3 *viewController3 = [[ViewController3 alloc] initWithNibName:@"ViewController3" bundle:nil];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav, viewController2, viewController3, nil];
    self.tabBarController.delegate = self;
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                 target:self 
                 action:@selector(done:)]];
}

- (void)done:(id)sender
{
    [self.parentViewController dismissModalViewControllerAnimated:YES];
}

看来答案是肯定的。我的印象是,该应用程序只有一个导航控制器,但更像是每个选项卡都有一个导航控制器,这取决于该选项卡是否有进一步的推送。

我不确定该如何更改此代码。