Ios 选项卡栏、视图控制器和故事板

Ios 选项卡栏、视图控制器和故事板,ios,objective-c,uitabbarcontroller,uistoryboard,Ios,Objective C,Uitabbarcontroller,Uistoryboard,好吧,我有一个小小的难题要解决 我有一个选项卡栏控制器,其中两个选项卡(实际上是三个,但这说明了问题)具有基本相同的UI 它们以相同的方式显示信息,但使用不同的查询来获取该信息 现在,因为它们是独立的选项卡,我需要在故事板上有两个实例才能创建这些选项卡。每个选项卡的“根”也有一个UINavigationController。但这意味着我在其中一个中设置的任何UI都必须在另一个中复制。我使用运行时属性来更改控制器获取信息的位置 我可以只使用一个实例并将其连接到两个导航控制器。这意味着我可以在一个地

好吧,我有一个小小的难题要解决

我有一个选项卡栏控制器,其中两个选项卡(实际上是三个,但这说明了问题)具有基本相同的UI

它们以相同的方式显示信息,但使用不同的查询来获取该信息

现在,因为它们是独立的选项卡,我需要在故事板上有两个实例才能创建这些选项卡。每个选项卡的“根”也有一个UINavigationController。但这意味着我在其中一个中设置的任何UI都必须在另一个中复制。我使用运行时属性来更改控制器获取信息的位置

我可以只使用一个实例并将其连接到两个导航控制器。这意味着我可以在一个地方更改UI,但如何配置每个视图控制器以获得正确的信息

我肯定有办法解决这个问题,但我的头脑陷入了困境,目前找不到出路

如果有人能理解我说的话,请你提供一些建议

这是我根据答案尝试过的,但它只在第一个选项卡上加载。后续选项卡只有一个nag控制器,没有根视图


通过再次从选项卡栏控制器拖动控件并选择“视图控制器”,可以将导航控制器(及其俯视图控制器)再次连接到选项卡栏控制器。这将为您提供导航控制器的两个实例及其俯视图控制器的两个实例。这样,如果更改UI,您只有一个场景需要编辑。我从选项卡式应用程序模板开始进行测试,将第二个控制器嵌入到导航控制器中,然后将控件拖动到第二个导航控制器,以便第二次将其连接起来。您将在导航控制器的选项卡栏项目中只看到一个标题,因此我在SecondViewController.m中执行了以下操作以更改标题

@interface SecondViewController ()
@property (weak,nonatomic) IBOutlet UILabel *label;
@end

@implementation SecondViewController {
    BOOL isThird;
}

-(void)awakeFromNib {
    if ([self.navigationController isEqual:self.tabBarController.viewControllers[2]]) isThird = YES;
    if (isThird) {
        self.navigationController.tabBarItem.title = @"Third";
    }
}


-(void)viewDidLoad {
    [super viewDidLoad];
    if (isThird) {
        self.label.text = @"Third View";
    }else{
        self.label.text = @"Second View";
    }
}
这将为第三个控制器提供一个新的标题,并且当您要将不同的信息加载到SecondViewController的两个实例中时,可以在代码中使用BOOL,isThird来区分它们


太棒了!太棒了,谢谢!我试图找到一种方法来访问“rootViewController”segue并从那里解决一些问题。我没有想过使用NavigationController的标题。非常感谢。嗯。。。这似乎不起作用。我将编辑我的问题。@Fogmeister,我还没有尝试过您在编辑中显示的设置,我没有这样做。我有两个从选项卡栏控制器到同一导航控制器场景的连接。我已经编辑了我的答案,加入了我故事板的截图。啊,这可能是更好的方式:)