Как изменить представление (XIB) после imagePickerController: didFinishPickingMediaWithInfo? - PullRequest
1 голос
/ 30 декабря 2010

Я новичок в разработке для iphone и target-c.

Я хочу знать, как изменить вид (файл XIB) после того, как камера сделает снимок.

Может кто-нибудь помочь мне или поделиться кодом? Я ищу это с недели :( После завершения приложения я готов поделиться своим проектом и / или создать учебник.

Информация о моем приложении: я хочу сканировать штрих-коды и сохранять штрих-коды в моем приложении. Для сканирования штрих-кодов я использую ZBarSDK. У меня есть TabBarController, на первой вкладке я могу открыть камеру. После процесса сканирования я хочу перейти на вторую вкладку (другой файл XIB) и показать результаты.

Спасибо за любую помощь.

Вот мой код первой вкладки (ScanCodeViewController):

#import < UIKit/UIKit.h >

@class OutPutCodeViewController;

@interface ScanCodeViewController : UIViewController <ZBarReaderDelegate> {
 IBOutlet UIImageView *img;
 OutPutCodeViewController *output;         
}


@property (nonatomic, retain) IBOutlet UIImageView *img;
@property (nonatomic, retain) OutPutCodeViewController *output;

- (IBAction) scanButton;

@end

.m

#import "ScanCodeViewController.h"


@implementation ScanCodeViewController

@synthesize img;
@synthesize output;


- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}


- (void)dealloc {
[img release];
[super dealloc];
}


- (IBAction) scanButton {
 NSLog(@"Scanbutton wurde geklickt!");

 ZBarReaderViewController *reader = [ZBarReaderViewController new];
 reader.readerDelegate = self;

 ZBarImageScanner *scanner = reader.scanner;

 [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

 [self presentModalViewController:reader animated: YES];
 [reader release];
 }


- (void) imagePickerController: (UIImagePickerController*) reader
 didFinishPickingMediaWithInfo: (NSDictionary*) info
{
 NSLog(@"Entered imagePickerController");


 // ADD: get the decode results
 id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
 ZBarSymbol *symbol = nil;
 for(symbol in results) {
 break;
 }

 img.image = [info objectForKey:UIImagePickerControllerOriginalImage];
 [reader dismissModalViewControllerAnimated: YES];


 //[self presentModalViewController:output animated:YES]; //by using this, app chrashes 

}


- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
 [picker dismissModalViewControllerAnimated: YES];

}


@end  

А вот вкладка Секонг (OutPutCodeViewController)

.h

#import <UIKit/UIKit.h>


@interface OutPutCodeViewController : UIViewController {
 IBOutlet UIImageView *resultImage;
 IBOutlet UITextField *resultText;
}

@property (nonatomic, retain) IBOutlet UIImageView *resultImage;
@property (nonatomic, retain) IBOutlet UITextField *resultText;


@end

.m

#import "OutPutCodeViewController.h"


@implementation OutPutCodeViewController

@synthesize resultImage;
@synthesize resultText;


- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}


- (void)dealloc {
 [resultImage release];
 [resultText release];

[super dealloc];
}


@end

Ответы [ 2 ]

3 голосов
/ 03 января 2011

Понял!

Невозможно установить более анимацию: ДА. Вот пример и правильный код.

Надеюсь, это поможет другим.

- (void) imagePickerController: (UIImagePickerController*) reader
 didFinishPickingMediaWithInfo: (NSDictionary*) info
{

    // ADD: get the decode results
    id<NSFastEnumeration> results =
    [info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;
    for(symbol in results)
        break;

[reader dismissModalViewControllerAnimated: NO];

    TableDetailViewController *tc = [[TableDetailViewController alloc]         initWithNibName:@"TableDetailViewController" bundle:nil];
    tc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:tc animated:YES];
    [tc release];   

}

brush51

0 голосов
/ 30 декабря 2010

В didFinishPickingMediaWithInfo вы должны позвонить [self.tabBarController setSelectedIndex:1], чтобы перейти на вторую вкладку.

...