UINavigation контроллер UIViewController и UItoolbar как проблема подпредставления - PullRequest
0 голосов
/ 26 августа 2011

Эй, ребята, я пытаюсь покинуть дополненную реальность и перейти к следующему контроллеру представления моего контроллера навигации

код взят из демоверсии 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

Большое спасибо

1 Ответ

0 голосов
/ 27 августа 2011

У меня нет опыта работы с ARKit, но является ли cameraController частью стека навигационного контроллера?Выпуская это, когда вы делаете, вы можете сбрасывать вещи.В качестве теста попробуйте закомментировать строку кода, которая выпускает cameraController, чтобы увидеть, влияет ли это на это.

Также, FWIW Я бы ожидал, что код, который вы используете для настройки панели инструментов, будет в viewDidLoadnot viewDidAppear.

...