2015-01-29 5 views
2

내보기 컨트롤러에서 나는 버튼을 터치 내가 화면에 Actionsheet를 얻을이 간단한 코드UIActionSheet 블록 뷰 컨트롤러의 dealloc

- (IBAction)tapOnButton:(UIButton *)sender 
{ 
    UIActionSheet *act = [[UIActionSheet alloc] initWithTitle:@"test" delegate:self cancelButtonTitle:@"aa" destructiveButtonTitle:@"bb" otherButtonTitles:@"cc", nil]; 
    [act showFromRect:CGRectMake(50, 50, 100, 100) inView:self.view animated:YES]; 
} 

-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) 
    { 

    } 
} 

를 시작합니다 Actionsheet의 버튼을 누르고이 닫힙니다.

내 viewcontroller를 닫을 때 dealloc이 실행되지 않습니다. 버튼을 누르지 않고 동작 시트를 열지 않으면 비활성화가 작동합니다.

은 충분히 큰 문제입니다. 누군가가 계속하고 있니?

는 내가 IOS 8.1.3 대부분의 경우 일부 참조 뷰 컨트롤러로 유지됩니다

+0

사람들이 읽을 수 있도록 코드 스크린 샷을 코드의 실제 텍스트로 바꾸십시오. – rmaddy

+0

iOS 7을 사용하여 장치 (또는 시뮬레이터)에서 코드를 실행해도 문제가 있습니까? – rmaddy

+0

iOS 8.1에서도 같은 문제가 발생합니다. 어쩌면 이것이 iOS 8 버그일까요? –

답변

2

을 나는 아이폰 OS 8 아이 패드에서 사용되지 않는 UIActionSheet를 사용하여 동일한 문제가 발생하고있다. iPhone (iOS 7 및 iOS 8) 및 iOS 7 iPad를 사용하면 문제를 재현 할 수 없습니다.

지금 테스트를 거친 유일한 해결책은 UIAlertController를 사용하여 iOS 8에서 작업 시트를 제시하는 것입니다. UIAlertController를 사용하면 View Controller가 올바르게 할당 해제됩니다.

1

에있어 - 따라서이 해제되지 않습니다.

아래와 같이 대리자 메서드에서 전무로 명시 적으로 위임 설정을 시도하십시오 :

- (IBAction)tapOnButton:(UIButton *)sender 
{ 
    UIActionSheet *act = [[UIActionSheet alloc] initWithTitle:@"test" delegate:self cancelButtonTitle:@"aa" destructiveButtonTitle:@"bb" otherButtonTitles:@"cc", nil]; 
    [act showFromRect:CGRectMake(50, 50, 100, 100) inView:self.view animated:YES]; 
} 

-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) 
    { 

    } 
    actionSheet.delegate = nil 
} 
+0

코드는 ios7에 대해 작성되었으며, 모든 애플리케이션을 검토해야합니다. 그러나 위임자를 배치하지 않으면 사용자가 단추를 누를 때 작업을 수행하는 방법은 무엇입니까? 또한 나는 항상 그를 사용하여 행동 시트를 보았습니다, 무언가가 변경된 것 같습니다 –

+0

질문에 아무런 문제가 없으며 그 코드에 대한 참조주기를 유발해야합니다. 사람들은 iOS 2.0 이후 아무런 문제없이 유사한 코드를 사용하고 있습니다. – rmaddy

+0

참조주기가 없음을 확인하기위한 작업에 대한 대리자 메서드에서 작업 시트를 nil로 설정해보십시오. – user3435374