2013-05-18 2 views
0

한 번 할당하고 초기화 한 후 "Init"를 추가 할 때 UIActionSheet의 버튼 스타일이 변경되는 이유는 무엇입니까? 이 코드를 사용하는 경우UIActionSheet - "init"이 버튼 스타일을 변경합니다.

가 제대로 나타납니다 : 나는 (추가 ...init] 포함)이 코드를 사용하는 경우

UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Photo/Camera" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Capture - Camera", @"Upload - Photo Library", nil]; 
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
[popupQuery showInView:self.view]; 

enter image description here




그것이 IM-제대로 표시하고 "취소 "버튼 스타일이 변경되었습니다.

UIActionSheet *popupQuery = [[[UIActionSheet alloc] initWithTitle:@"Photo/Camera" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Capture - Camera", @"Upload - Photo Library", nil] init]; 
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
[popupQuery showInView:self.view]; 

enter image description here

+1

왜 '초기화'를 두 번 하시겠습니까? –

+0

저는 실제 프로젝트에 참여하지 않았습니다. 왜 그렇게했을 때 버튼 스타일을 변경하는지 궁금합니다. –

답변

2

나는 이것이 호기심의 문제라고 가정하고 있습니다 (이중 "init"에 대한 유효한 이유는 없습니다).

둘째 init은 첫 번째 initWithTitle...에서 많은 ivars 설정을 재설정합니다. 가장 명백하게 cancelButtonIndex이 재설정되므로 취소 버튼이 일반 버튼으로 표시됩니다.

+0

(예, 호기심에서 벗어났습니다.) 아! 그 이후로! 그러나 변수를 재설정하는 경우 왜 "제목"을 "(nil)"또는 다른 것으로 재설정하지 않는지 궁금합니다. –

+0

소스 코드가 없으면 어떤 일이 발생하는지 정확히 알 수있는 방법이 없습니다. 'init'은 버튼 배열이나 제목에 아무 것도 지정하지 않는다는 것이 확실해 보입니다. 'addButtonWithTitle'가 처음 호출 될 때 배열이 지연 설정 될 수 있습니다. – rmaddy

+0

매우 흥미 롭습니다! –