开发者

How to obtain the container class of an Actionsheet?

I am a green hand of iPhone development, and I just get confused about a method UIActionsheet,which is the "showInView". So what is the relation between the view who called the actionsheet and the actionsheet it self.

Actually, I wannt to customize the button in an actionsheet, so I create a class for it and overide the methods, and I want really call the methods in the superview, anybody got a solution?

Thank you!

(btw, I tried the following code, but it doesn't work.)

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

{........
   else if (bu开发者_如何学运维ttonIndex==sharers.count+1)
    {

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


There is no public API for accessing the container, or owner of a UIActionSheet.

You should not use the superview property to try to get to the owner, the internal view layout for the action sheet is private and can/will change between OS updates.

If you need to get hold of the owner then add a proper property to your UIActionSheet subclass to do this. For example:

@protocol MYActionSheetChoiceDelegate;

@interface MYActionSheet : UIActionSheet <UIActionSheetDelegate> {}

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

@end

Notice that I name the property choiceDelegate since the delegate property is already taken. Now assuming your subclass is also your it's own UIActionSheetDelegate this can be done:

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

Change and fill the gaps to your own needs.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜