2011-08-26 68 views
-1

嘿,大家好我试图离开增强现实并转到下一个视图控制器到我的导航控制器UINavigation控制器的UIViewController和UItoolbar作为一个子视图的问题

的代码是从ARKit演示,我只是增加了编程方式UIToolbar作为具有操作按钮..我一个子视图想这个按钮导致我现有的导航控制器的下一个视图控制器。动作takePicture:被执行,因为我有一个的NSLog消息,但新的ViewController未添加

这是的ARGeoViewController.h

#import <Foundation/Foundation.h> 

#import "ARViewController.h" 
#import "AfterARViewController.h" 


@interface ARGeoViewController : ARViewController { 
CLLocation *centerLocation; 
AfterARViewController *afterARViewController; 

} 

@property (nonatomic, retain) CLLocation *centerLocation; 
- (IBAction)takePicture:(id)sender; 
@property (nonatomic, retain) AfterARViewController *afterARViewController; 

@end 

这个代码是ARGeoViewController.m

的代码
#import "ARGeoViewController.h" 

#import "ARGeoCoordinate.h" 
#import "ARViewController.h" 

@implementation ARGeoViewController 

@synthesize centerLocation; 

@synthesize afterARViewController; 


- (void)setCenterLocation:(CLLocation *)newLocation { 
[centerLocation release]; 
centerLocation = [newLocation retain]; 

for (ARGeoCoordinate *geoLocation in self.coordinates) { 
    if ([geoLocation isKindOfClass:[ARGeoCoordinate class]]) { 
     [geoLocation calibrateUsingOrigin:centerLocation]; 

     if (geoLocation.radialDistance > self.maximumScaleDistance) { 
      self.maximumScaleDistance = geoLocation.radialDistance; 
     } 
    } 
} 

} 
    -(void)viewWillAppear:(BOOL)animated{ 

UIToolbar *toolbar = [UIToolbar new]; 
toolbar.barStyle = UIBarStyleBlackTranslucent; 


// create a bordered style button with custom title 
UIBarButtonItem *playItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera 
                      target:self 
                      action:@selector(takePicture:)] autorelease]; 


NSArray *items = [NSArray arrayWithObjects: 
        playItem, 
        nil]; 
toolbar.items = items; 

// size up the toolbar and set its frame 
// please not that it will work only for views without Navigation toolbars. 
[toolbar sizeToFit]; 
CGFloat toolbarHeight = [toolbar frame].size.height; 
CGRect mainViewBounds = self.view.bounds; 
[toolbar setFrame:CGRectMake(CGRectGetMinX(mainViewBounds), 
          CGRectGetMinY(mainViewBounds) + CGRectGetHeight(mainViewBounds) - (toolbarHeight), 
          CGRectGetWidth(mainViewBounds), 
          toolbarHeight)]; 

[self.view addSubview:toolbar]; 


} 

- (IBAction)takePicture:(id)sender 
{ 
NSLog(@"takepicture"); 
if(self.afterARViewController == nil) 
{ 
    AfterARViewController *afterARController = [[AfterARViewController alloc] 
                initWithNibName:@"AfterARViewController" bundle:[NSBundle mainBundle]]; 
    self.afterARViewController = afterARController; 
    [afterARController release]; 
    [cameraController release]; 


} 

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

    } 


    @end 

谢谢你这么多

回答

0

我不跟ARKit经验丰富,但cameraController导航控制器的堆栈的一部分?当你这样做的时候释放它,你可能会丢掉东西。就像测试一样,尝试注释释放cameraController的代码行,看看它是否会影响这一点。

此外,FWIW我早就料到你的使用设置工具栏是在viewDidLoad中,不viewDidAppear代码。

相关问题