Разница между appdelegate и делегатом в viewcontroller - PullRequest
3 голосов
/ 04 декабря 2011

Я хочу интегрировать один пример кода с (например, проектом SampleCode) моего приложения для iPhone. В этом примере код в firstViewController добавляется в MainWindow.xib и связывается с viewController, созданным в приведенном ниже коде.

@interface SampleCodeAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    firstViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet firstViewController *viewController;

и viewController создаются с помощью initWithCoder, и при первом появлении первого нажатия при нажатии кнопки камера может быть открыта с использованием метода OpenCamera, как показано в следующем коде.

//in firstViewController.mm file

- (id)initWithCoder:(NSCoder *)coder {

    if (self = [super initWithCoder:coder]) {

    }

    [self initLocal];

    return self;
}
//to open camera in SampleCode application
    - (IBAction)OpenCamera {

        UIApplication *app = [UIApplication sharedApplication];
        SampleCodeAppDelegate* delegate = [app delegate];
        UIViewController* uiViewCont = [delegate viewController];
        ((CCamera*)m_pCamera)->Camera(uiViewCont);
    }

В моем приложении на основе навигации (MyApplication) Iхочу вызвать firstViewController из SampleCode с одним из viewController MyApplicationViewControllerA напрямую, без добавления в MyApplicationAppDelegate.

Поэтому я хочу, чтобы при создании делегата в MyApplicationViewControllerA viewController, который должен работать как приложение appdelegate в SampleCode.Я не могу открыть камеру, но после закрытия камеры я не могу открыть любой другой вид MyApplication, кроме MyApplicationViewControllerA.Я пытаюсь pushViewController и modalViewController не в состоянии отрисовать другой View.

Я не запутался в делегате.Поэтому я хочу знать, в чем разница между AppDelegate (в SampleCodeAppDelegate : NSObject <UIApplicationDelegate>) и делегатом, объявленным в другом ViewContrller.

1 Ответ

2 голосов
/ 06 декабря 2011

Я пытаюсь pushViewController и modalViewController не удается отобразить другой вид.

Ответ: Если вы не можете отобразить другой вид после экрана наложения камеры, то я думаю, что вам нужно показать другой вид, выполнив действие с основным потоком с помощью executeSelectorOnMainThread

[self performSelectorOnMainThread:@selector(showOtherView) withObject:OtherViewControllerObj waitUntilDone:YES];

и в методе выбора showOtherView сначала вам нужно подтвердить, что вы должны нажать viewconroller в навигационном контроллере, а если он уже передан, то вы должны попытаться показать другое представление, используя presentModalViewController, как показано ниже:

-(void)showOtherView{

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

[self presentModalViewController:OtherViewControllerObj animated:YES]; 

}

Я думаю, это должно сработать.

...