关于Objective C:iOS推动视图控制器崩溃

iOS pushing view controller crash

我是iOS开发的初学者,因此如果已经提出此问题,我深表歉意。在这种情况下,我要求您将我定向到适当的线程。

我想实现一个方案,即在第一个表视图控制器上单击表单上的标签时,将打开另一个表视图控制器,这为我提供了可供我为该标签选择的选项列表。示例:如果在第一个表格视图控制器上的标签为"性别",则单击旁边的箭头应打开另一个表格视图控制器,其行为公,母。

第一个控制器是"编辑配置文件",其中具有以下代码:

1
2
3
4
5
6
7
8
9
10
11
- (IBAction)btndrpSelect_Click:(id)sender {

DropDownViewController *secondView = [[DropDownViewController alloc] initWithNibName:@"DropDownViewController" bundle:nil];

self.GenderArray = [NSMutableArray arrayWithObjects: @"Male", @"Female", nil];

secondView.drpOptions = self.GenderArray;

UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:secondView];

[self.navigationController pushViewController:passcodeNavigationController animated:YES];

} ??

通用下拉表视图控制器具有以下代码:

.h文件:

1
2
3
4
5
6
7
8
@interface DropDownViewController : UITableViewController
{
    NSMutableArray *drpOptions;
}

@property(nonatomic,retain)NSMutableArray *drpOptions;

@end

.m文件:

1
2
3
4
int count = [drpOptions count];

for (int i = 0; i < count; i++)
NSLog (@"Element %i = %@", i, [drpOptions objectAtIndex: i]);

当我单击第一个视图控制器上的按钮时,我希望屏幕翻转并显示下拉选项,但它会错误退出。请指导。

谢谢


在没有看到堆栈跟踪和错误代码的情况下,我不能确定地回答您的问题。但是,通过查看您的代码,我可以看到您尝试将一个导航控制器推到另一个。这将导致引发错误。删除以下代码行:

1
UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:secondView];

,然后将您的pushViewController代码更改为此:

1
[self.navigationController pushViewController:secondView animated:YES];

在以后的编程工作中,请密切注意错误代码。他们通常会很有帮助。您的错误应该按照"不支持Pushing NavigationController"的方式说明,这是非常有用的信息,应该是您对Google的第一件事。