我正在制作一个标签栏应用程序,每个标签都有一个完全不同的应用程序。我在查看如何设置其中一个标签时遇到了很多困难。
我想要做的是拥有一个带有两个选项的分段控件(我称之为Test House和Corner)。当分段控件= 0时,将显示代表测试室的nib文件(只是一个UIViewController),当分段控件= 1时,将加载表示角的nib文件(也是一个UIViewController)。我在测试室和角落使用了一个单独的笔尖,因为每个笔尖上会有很多图像,因此只能在一个视图上编码。
目前我有三个笔尖,每个笔尖都有自己的控制器 - 一个用于分段控制视图,另一个用于我想要切换的每个笔尖。我的思维过程是始终显示Segmented控件视图,并根据分段控件推送其他两个nib。不幸的是,我无法使任何代码工作,可能是由于我的设置完全不合适。
我的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 =用于分段控制笔尖的控制器 InteractiveTestHouseViewController =测试屋笔尖。分段控制中的选择1 InteractiveCornerHouseViewController =角落笔尖。分段控制中的选择2
我也收到了6次以下警告,让我感到难过: “TestHouseViewController”可能无法响应'-pushViewController:animated:
感谢任何帮助。
答案 0 :(得分: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];
}
答案 1 :(得分:0)
尝试delegate.testHouseViewController.navigationController
推送和弹出。此外,第二个代码块中的两个if语句都询问分段控件是否为1。
答案 2 :(得分:0)
@AlexP,您打算如何实现这一目标:“我的思维过程是让分段控件视图始终显示”?