2010-04-17 3 views
8

그래서 버튼이있는 팝 오버가 있습니다. 버튼이 눌려지면 popover가 사라 지길 바래. 그것은 충분히 쉬운 것처럼 보이지만, 나는 내 인생에 대해 알아낼 수 없습니다. 나는 팝 오버를 표시하기 위해 사용하는 코드는 다음과 같습니다 다음 addcategoryviewcontroller 내콘텐츠 컨트롤러 내에서 iPad UIPopoverController 닫기

AddCategoryViewController* content = [[AddCategoryViewController alloc] init]; 
UIPopoverController* aPopover = [[UIPopoverController alloc] 
      initWithContentViewController:content]; 
aPopover.delegate = self; 
[content release]; 

// Store the popover in a custom property for later use. 
self.addCategoryPopover = aPopover; 
[aPopover release]; 
[addCategoryPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

, 나는이 다음 팝 오버가에서 생성되는 위치

-(IBAction)saveAddCategory:(id)sender { 
if (rootViewController == nil) 
    rootViewController = [[RootViewController alloc] init]; 

[rootViewController.addCategoryPopover dismissPopoverAnimated:YES]; 
[rootViewController dismissPopover]; 
} 

Rootviewcontroller입니다. 불행히도 이러한 방법 중 어느 것도이를 기각합니다. 어떤 도움?

답변

4

이 줄에는 경고가 표시됩니다.

aPopover.delegate = self; 

그리고 코드를 실행할 경우. 응용 프로그램이 충돌합니다. 대신 this처럼해야합니다.

+0

사과는 단순히 팝 오버를 닫기 위해 버튼을 사용하지 않는 것을 유의하십시오. – ekinnear

2

나는

- (void)viewWillDisappear:(BOOL)anAnimated 
{ 
    [self.dPopover dismissPopoverAnimated: NO]; 
    self.dPopover = nil; 
    [super viewWillDisappear: anAnimated]; 
} 

을 가지고이 사건에서 작동하지 왜 표시되지 않습니다.

귀하의 if은 문제가 많으므로 내 생각에 당신은 당신이 생각하는 견해와 이야기하지 않는 것입니다. 새 컨트롤러를 만들었 기 때문에 rootViewController.addCategoryPopover은 아마도 nil입니다.

+0

나는 문 "만약"거의 아무것도 같은 절망의 밖으로 나를 위해 일하고 있다고했다. 한 순간에 [rootViewController.addCategoryPopover dismissPopoverAnimated : YES];를 시도해 보았습니다. 해당 기능의 코드로 . 그러나 그것은 작동하지도 않았다. – joshholat

+0

당신은 내 묵시적 ​​질문을 언급하지 않았습니다 - rootViewController.addCategoryPopover의 가치는 무엇입니까? –

0

사용 NSNotificationCenter으로 DissmissPoperController 서있 아버지 viewControll

+0

ParentViewController가 FatherViewController가 아닙니다. 하나는 블록이나 위임 또는 KVO 또는 그가 원하는 모든 것을 사용할 수도 있습니다. – Vive

관련 문제