2012-07-23 1 views
1

내가 아이 패드에이 방법을 UIActionSheet를 표시하고있어 설정 이 Action One 버튼의 인덱스는 1이고, Action Two의 인덱스는 2이므로 분명히 틀립니다. -1으로 변경하십시오.UIActionSheet firstOtherButtonIndex 잘못

분명히 위의 요점은 특수한 경우에만 파괴적인 버튼을 표시하는 것입니다 (그렇지 않으면 init 호출에서 모든 제목을 전달했을 것이고 아마 상황이 좋을 것입니다).

무엇이 누락 되었습니까?

답변

2

firstOtherButtonIndex은 아마도 initWithTitle 방법에서만 설정됩니다. 수동으로 버튼을 추가하는 경우 수동으로 설정해야합니다. 다른 단추를 추가 한 후에 취소 단추를 추가한다는 사실 때문에 문제가 발생할 수도 있습니다. 일반적으로 파괴 및 취소 버튼의 인덱스는 firstOtherButtonIndex보다 낮습니다.

쉬운 방법은 무엇일까요?


_actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose action" 
              delegate:(id)self 
            cancelButtonTitle:@"Cancel" 
          destructiveButtonTitle:(special_case ? @"Discard" : nil) 
            otherButtonTitles:@"Action One", @"Action Two", nil]; 
+0

바로 'firstOtherButtonIndex'는 수동으로 설정하지 않아야한다고 생각했습니다. 버튼을 추가하는 순서는 HIG 호환 방식 (파괴적인 첫 번째 버튼, 다른 버튼, 마지막 취소)이라고 이해했습니다. 예, 파괴 및 취소 인덱스는 실제로 더 낮습니다 (-1 및 0). 따라서 버튼을 추가하는 순서와 일치하지 않습니다. – lucianf

+0

경고 시트는 색인에서 어떤 단추가 취소되고 마지막 단추로 표시되는지 알아야합니다. 그러나 API가 완벽하지 않으며 파괴적이고 취소 버튼이 동적으로 추가된다고는 생각하지 않습니다. 항상 생성자에 지정해야합니다. – Sulthan

+0

고마워, 나는 그걸 염두에 두겠다. 분명히 위의 "쉬운 방법"은이 경우에 가장 의미가 있습니다 (변수 수를 otherButton으로 갖기 때문에 모든 것을 동적으로 수행했을뿐입니다). – lucianf