Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用分段控件推送视图控制器_Objective C_Xcode - Fatal编程技术网

Objective c 使用分段控件推送视图控制器

Objective c 使用分段控件推送视图控制器,objective-c,xcode,Objective C,Xcode,我目前正在制作一个选项卡栏应用程序,每个选项卡都有一个完全不同的应用程序。我很难想象如何设置一个选项卡 我想做的是有一个分段控件,有两个选项(我称它们为testhouse和Corner)。当分段控件=0时,将显示代表试验室的nib文件(仅为UIViewController),当分段控件=1时,将加载代表拐角的nib文件(也是UIViewController)。我为测试室和角落使用了一个单独的笔尖,因为每个笔尖上都会有很多图像,这使得它过于混乱,无法只在一个视图上编码 目前,我有三个NIB,每个N

我目前正在制作一个选项卡栏应用程序,每个选项卡都有一个完全不同的应用程序。我很难想象如何设置一个选项卡

我想做的是有一个分段控件,有两个选项(我称它们为testhouse和Corner)。当分段控件=0时,将显示代表试验室的nib文件(仅为UIViewController),当分段控件=1时,将加载代表拐角的nib文件(也是UIViewController)。我为测试室和角落使用了一个单独的笔尖,因为每个笔尖上都会有很多图像,这使得它过于混乱,无法只在一个视图上编码

目前,我有三个NIB,每个NIB都有自己的控制器——一个用于分段控制视图,另一个用于我想要切换的每个NIB。我的想法是让分段控件视图始终显示,并根据分段控件推送其他两个笔尖。不幸的是,我无法让任何代码正常工作,可能是因为我的设置完全不可靠

使用分段控件的类中的My viewDidLoad方法:

- (void)viewDidLoad {
    [super viewDidLoad];
    QSDTIntegratedAppAppDelegate *delegate = (QSDTIntegratedAppAppDelegate *)[[UIApplication sharedApplication] delegate];
    if (segmentedControl == 0) {
        [delegate.testHouseViewController pushViewController:interactiveTestHouseViewController animated:YES];
    }
    else {
        [delegate.testHouseViewController pushViewController:interactiveCornerViewController animated:YES];
    }   
}
分段控件更改时要读取的我的函数:

- (void) segmentAction:(id)sender{
self.segmentedControl = sender;
QSDTIntegratedAppAppDelegate *delegate = (QSDTIntegratedAppAppDelegate *)[[UIApplication sharedApplication] delegate];
if ([segmentedControl selectedSegmentIndex] == 1) {
    NSLog(@"TEST HOUSE CHOSEN!");
    [delegate.testHouseViewController popViewControllerAnimated:YES];
    [delegate.testHouseViewController pushViewController:interactiveTestHouseViewController animated:YES];
}
if ([segmentedControl selectedSegmentIndex] == 1) {
    NSLog(@"CORNER CHOSEN!");
    [delegate.testHouseViewController popViewControllerAnimated:YES];
    [delegate.testHouseViewController pushViewController:interactiveCornerViewController animated:YES];
}
}

TestHouseViewController=分段控制nib的控制器 InteractiveTestHouseViewController=测试房屋nib。分段控制中的选择1 InteractiveCornerHouseViewController=角笔尖。分段控制中的选择2

我也收到了以下6次警告,让我感到困惑: “TestHouseViewController”可能不响应“-pushViewController:动画:


非常感谢您的帮助。

请尝试
委托.testHouseViewController.navigationController
以推送和弹出。另外,第二个代码块中的两个if语句都询问分段控件是否为1。

pushViewController
将与
UINavigationController
一起使用。如果试图使用
UIViewController
显示视图控制器,则需要使用
presentModalViewController
。否则,如果testHouseViewController是UINavigationController的根视图控制器,请执行以下操作:

[delegate.testHouseViewController.navigationController popViewControllerAnimated:YES];
[delegate.testHouseViewController.navigationController pushViewController:interactiveCornerViewController animated:YES];
另外,在
segmentAction
方法中,您将两个if语句中的段与
1
进行比较。这里有一个解决方案:

- (void) segmentAction:(id)sender{
self.segmentedControl = sender;
QSDTIntegratedAppAppDelegate *delegate = (QSDTIntegratedAppAppDelegate *)[[UIApplication sharedApplication] delegate];

if ([segmentedControl selectedSegmentIndex] == 0) {
    NSLog(@"TEST HOUSE CHOSEN!");
    [delegate.testHouseViewController.navigationController popViewControllerAnimated:YES];
    [delegate.testHouseViewController.navigationController  pushViewController:interactiveTestHouseViewController animated:YES];
}
if ([segmentedControl selectedSegmentIndex] == 1) {
    NSLog(@"CORNER CHOSEN!");
    [delegate.testHouseViewController.navigationController  popViewControllerAnimated:YES];
    [delegate.testHouseViewController.navigationController  pushViewController:interactiveCornerViewController animated:YES];
}

@AlexP,你打算如何做到这一点:“我的思维过程是让分段控制视图始终显示出来”