2011-08-05 5 views
0

저는 아이폰 개발의 녹색 손입니다. 그리고 나는 단지 "showInView"인 UIActionsheet 메서드에 대해 혼란스러워합니다. 그렇다면 작업 표를 호출 한 뷰와 자체 작업 시트의 관계는 무엇입니까?
사실 저는 액션 시트의 버튼을 사용자 정의하기 위해 노력했습니다. 그래서 클래스를 생성하고 메소드를 덮어 썼습니다. 그리고 실제로 superview에서 메소드를 호출하고 싶습니다. 아무도 솔루션을 가지고 있지 않습니까?작업 표의 컨테이너 클래스를 얻는 방법은 무엇입니까?

감사합니다.
은 (BTW, 나는 다음과 같은 코드를 시도했지만 작동하지 않습니다.)

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated 

{........ 
    else if (buttonIndex==sharers.count+1) 
    { 

    AddCommentViewController *parentController=(AddCommentViewController *)[self.superview nextResponder]; 
} 
+0

액션 시트 단추를 사용자 지정하거나 하위 클래스를 만드는 것과 관련된 코드에서 아무 것도 볼 수 없습니다. – PeyloW

+0

AddCommentViewController에 사용자 정의 된 작업 시트가 있습니다. 여기에있는 코드는 AddCommentViewController의 메소드를 호출하려는 Actionsheet 클래스에 있습니다. – user880449

답변

0

공용 컨테이너에 액세스하기위한 API, 또는 UIActionSheet소유자이 없습니다.

소유자에게 연결을 시도하기 위해 superview 속성을 사용하면 안됩니다. 작업 시트의 내부보기 레이아웃은 비공개이며 OS 업데이트간에 변경 될 수 있습니다.

소유자를 확보해야 할 경우 UIActionSheet 하위 클래스에 적절한 속성을 추가해야합니다. 나는 delegate 속성이 이미 가지고 있기 때문에 재산 choiceDelegate 이름을

@protocol MYActionSheetChoiceDelegate; 

@interface MYActionSheet : UIActionSheet <UIActionSheetDelegate> {} 

@property(nonatomic, assign) id<MYActionSheetChoiceDelegate> choiceDelegate; 

@end 

공지 예를 ​​들면 다음과 같습니다.

-(void)actionSheet:(UIActionSheet*)sheet willDismissWithButtonIndex:(NSInteger)index; 
{ 
    if (index == SOME_INDEX) { 
     [self.choiceDelegate actionSheet:self didChooseSomething:index]; 
    } 
} 

변경을하고 자신의 필요에 격차를 채우기 : UIActionSheetDelegate 이제 서브 클래스를 가정하는 것은 또한 당신의 그것의 자신이 수행 할 수 있습니다.

+0

대단히 고마워요. – user880449

관련 문제