我是iPhone开发的绿手,我对UIActionsheet的方法感到困惑,这是“showInView”。那么调用动作表的视图与它自己的动作表之间的关系是什么 实际上,我想在动作表中自定义按钮,所以我为它创建了一个类并覆盖了方法,我想在superview中调用方法,任何人都有解决方案吗?
谢谢! (顺便说一句,我尝试了以下代码,但它不起作用。)
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{........
else if (buttonIndex==sharers.count+1)
{
AddCommentViewController *parentController=(AddCommentViewController *)[self.superview nextResponder];
}
答案 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];
}
}
根据自己的需要改变并填补空白。