这是令人费解的,所以我会尽力提供尽可能多的信息。我的主要UIViewController以信息屏幕的形式打开一个模态弹出窗口。
这是来自MainViewController的调用
infoPopup = [ModalPopup modalPopupWithDelegate:self];
[infoPopup presentInView:self.view.window];
[self.view addSubview:infoPopup];
这是ModalPopup中的接收方法
+ (id)modalPopupWithDelegate:(id <ModalPopupDelegate>)dlg {
ModalPopup *info = [[ModalPopup alloc] init];
info.delegate = dlg;
return info;
}
在ModalPopup中,我使用“modalPopupFinished”的可选方法创建一个协议,并使MainViewController成为委托。
在ModalPopup中我添加了一个UIScrollView并在滚动视图中插入了5个UIView。我在同一个XIB文件中创建了所有视图
NSString *infoXib;
if (IS_IPAD)
infoXib = @"info_iPad";
else
infoXib = @"info_iPhone";
NSArray *views;
views = [[NSBundle mainBundle] loadNibNamed:infoXib owner:self options:nil];
UIView *v1 = [views objectAtIndex:0];
views = [[NSBundle mainBundle] loadNibNamed:infoXib owner:self options:nil];
UIView *v2 = [views objectAtIndex:1];
views = [[NSBundle mainBundle] loadNibNamed:infoXib owner:self options:nil];
UIView *v3 = [views objectAtIndex:2];
views = [[NSBundle mainBundle] loadNibNamed:infoXib owner:self options:nil];
UIView *v4 = [views objectAtIndex:3];
views = [[NSBundle mainBundle] loadNibNamed:infoXib owner:self options:nil];
UIView *v5 = [views objectAtIndex:4];
NSArray *pages = [NSArray arrayWithObjects:v1, v2, v3, v4, v5, nil];
[self setPagesInArray:pages];
- (void)setPagesInArray:(NSArray *)pages {
if (pages) {
int numberOfPages = pages.count;
[pageScroll setContentSize:CGSizeMake(pageScroll.frame.size.width * numberOfPages, pageHeight)];
pageControl.numberOfPages = numberOfPages;
NSUInteger i = 0;
while (i < numberOfPages) {
UIView *page = [pages objectAtIndex:i];
page.frame = CGRectMake(pageWidth * i, 0, pageWidth, pageHeight);
[pageScroll addSubview:page];
i++;
}
}
}
视图在滚动视图中加载正常,我可以按预期滚动它们。
XIB中的一个视图作为一些按钮,我使视图成为Custom Class ModalPopup的成员。我已经将按钮连接到ModalPopup中的一些IBActions,它们按预期启动。
在ModalPopup中,我创建了一个关闭按钮,用于在MainViewController上触发委托“modalPopupFinished”事件。
- (void)finishCloseAnimation {
if ([_delegate respondsToSelector:@selector(modalPopupFinished)])
[_delegate modalPopupFinished];
[self removeFromSuperview];
}
没有问题一切都很好......除了
当我按下View中的一个按钮并转到一个委托方法时,它已经失去了大脑而无法记住代表
- (IBAction)facebook:(id)sender {
if ([_delegate respondsToSelector:@selector(sendLikeFacebook)])
[_delegate sendLikeFacebook];
}
事实上,当我在ModalPopup上进入Facebook方法时,一切都是零。
我想在MainViewController中触发的方法打开
[self presentViewController:composeController animated:YES completion:nil];
因此我想从主页面打开它。
答案 0 :(得分:0)
听起来像你有2个ModalPopup实例。既然你说你把你的按钮连接到IB中的ModalPopup,这让我相信你在xib中创建了一个ModalPopup实例,它不同于你以编程方式创建的ModalPopup。按下按钮时调用的ModalPopup“完全为空”的事实是进一步的证据。
如果是这种情况,那么您应该从xib获取实例,而不是以编程方式创建ModalPopup,就像获取视图一样。我还怀疑您已经将视图添加到xib中的ModalPopup,这意味着您不必手动添加它们。