如何获取Actionsheet的容器​​类?

时间:2011-08-05 11:36:33

标签: iphone

我是iPhone开发的绿手,我对UIActionsheet的方法感到困惑,这是“showInView”。那么调用动作表的视图与它自己的动作表之间的关系是什么   实际上,我想在动作表中自定义按钮,所以我为它创建了一个类并覆盖了方法,我想在superview中调用方法,任何人都有解决方案吗?

谢谢! (顺便说一句,我尝试了以下代码,但它不起作用。)

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

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

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

1 个答案:

答案 0 :(得分:0)

没有用于访问容器的公共API,或UIActionSheet所有者

您不应该使用superview属性来尝试访问所有者,操作表的内部视图布局是私有的,可以/将在操作系统更新之间进行更改。

如果您需要获取所有者,请在UIActionSheet子类中添加适当的属性来执行此操作。例如:

@protocol MYActionSheetChoiceDelegate;

@interface MYActionSheet : UIActionSheet <UIActionSheetDelegate> {}

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

@end

请注意,我将属性命名为choiceDelegate,因为delegate属性已被占用。现在假设您的子类也是您自己的UIActionSheetDelegate,可以这样做:

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

根据自己的需要改变并填补空白。