1

enter image description here不平衡通话开始/结束的外观转换为...-的UIViewController遏制

好了,与iOS 5苹果推出视图控制器容器(真棒!)

以上就是我的应用程序层好像。 TabBar包含NavController包含ViewController(容器),其中包含2个表视图,由分段控制切换。

当我选择一个表格单元格时,它会轻松推动新的视图。但是,如果我按下detailViewController内的按钮,我希望它模态地显示MFMailComposeViewController。其中简要介绍了自己,然后立即自行解散。错误日志我得到的是:

不平衡呼叫开始/对的UITabBarController

现在终端外形的转变,这意味着IM试图提出一个观点,而其他仍然显示或运行时间循环,我试图加入延迟来阻止这一点,但没有任何工作。我添加了所有的代理,并正确导入了所有的库。

我认为这可能与我如何从原始tableview推送新视图或如何将视图加载到容器中有关。该项目使用Xcode的Tab Bar应用程序模板的基本代码,只是你知道的。下面的代码:

的ViewController /集装箱

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Alloc Init View Controllers 
    menuDrinksViewController = [[MenuDrinksViewController alloc] init]; 
    menuFoodViewController = [[MenuFoodViewController alloc] init]; 

    // Create Parent/Child relationship 
    [menuFoodViewController didMoveToParentViewController:self]; 
    [self addChildViewController:menuFoodViewController]; 

    [menuDrinksViewController didMoveToParentViewController:self]; 
    [self addChildViewController:menuDrinksViewController]; 

    [appearanceClass setBackgroundImage:self.view]; 

    // segmented controller 
    segmentedControl = [[SVSegmentedControl alloc] initWithSectionTitles:[NSArray arrayWithObjects:@"    Eat    ", @"    Drink    ", nil]]; 
    [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 
    [appearanceClass setSegmentedControl:segmentedControl]; 
    [self.view addSubview:segmentedControl]; 

    //self.view.backgroundColor = [UIColor redColor]; 

    // Add and Size subviews 
    [self.view addSubview:menuFoodViewController.view]; 
    menuFoodViewController.view.frame = CGRectMake(0, 39, 320, self.view.frame.size.height - 40 + 1); 
    menuDrinksViewController.view.frame = CGRectMake(0, 39, 320, 327 + 1); 
} 


-(IBAction)segmentAction:(id)selector 
{ 
    // it's a custom segmented control, dw bout the code. 
    if (segmentedControl.selectedIndex == 0) 
    { 
     [self.view addSubview:menuFoodViewController.view]; 
     [menuDrinksViewController.view removeFromSuperview]; 
    } 
    else if (segmentedControl.selectedIndex == 1) 
    { 
     [self.view addSubview:menuDrinksViewController.view]; 
     [menuFoodViewController.view removeFromSuperview]; 
    } 

} 

TableViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MenuFoodDetailViewController *menuFoodDetailViewController = [[MenuFoodDetailViewController alloc] initWithNibName:nil bundle:nil]; 
    //MenuFoodDetailViewController *menuFoodDetailViewController = [[MenuFoodDetailViewController alloc] init]; 

    [self.parentViewController.navigationController pushViewController:menuFoodDetailViewController animated:YES]; 
    [tableView deselectRowAtIndexPath:indexPath animated:NO]; 
} 

ButtonPress代码从详细视图控制器。

- (void)showMailComposer 
{ 
    // attempt to delay the presentModalView call, doesnt work... 
    double delayInSeconds = 0.1; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [self.navigationController presentModalViewController:mailComposeViewController animated:YES]; 
    }); 
} 

我知道这是很多要问,但我一直在这个好几天。 所有与视图无关的代码,即MFMailViewComposer工作正常,我已经在其他应用程序中测试过它。

我已经试过各种变化的推新模式的看法,即 self.parentViewController.navigationController presentModal...(ETC)

没有什么工作=/

回答

3

事实证明这是iOS5内的一个错误。在单独的项目上重新创建代码后,它工作。所以我将问题追溯到iOS5外观定制协议,当我尝试更改UINavigationBar内的字体时,它会导致MFMailComposeViewController内的错误和iOS6内的另一个模式视图。我已经提交了苹果的雷达

0

我有同样的问题,像前两天..

试试这个..

当你按下'detailViewController'上的按钮时,你试图以模态方式呈现MFMailComposeViewController,对吗?

所以,它抛出一个异常的原因之一是,当你以模态方式显示MFMailComposeViewController时,你正在释放'detailViewController'。因此,MFMailComposeViewController无法返回到'detailViewController'。

检查您是否在'detailViewController'上使用了autorelease,或者在'detailViewController'的析构函数中放置了一个断点并对其进行调试。

相关问题