我正在尝试将StackScrollView(https://github.com/Reefaq/StackScrollView)实现到我的项目中,但是,我想要从一个nib加载一堆视图,而不是一堆tableviews。 我创建了一个按钮并将其添加到rootViewController.m;
- (void)viewDidLoad {
[super viewDidLoad];
rootView = [[UIViewExt alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
rootView.autoresizingMask = UIViewAutoresizingFlexibleWidth + UIViewAutoresizingFlexibleHeight;
[rootView setBackgroundColor:[[UIColor scrollViewTexturedBackgroundColor] colorWithAlphaComponent:0.6]];
UIButton *buttonBar;
buttonBar = [UIButton buttonWithType:UIButtonTypeCustom];
[buttonBar setImage:[UIImage imageNamed:@"blue.png"] forState:UIControlStateNormal];
[buttonBar setImage:[UIImage imageNamed:@"gray.png"] forState:UIControlStateSelected | UIControlStateHighlighted];
buttonBar.frame = CGRectMake(9, 40, [UIImage imageNamed:@"www_gray.png"].size.width, [UIImage imageNamed:@"www_gray.png"].size.width);
[buttonBar addTarget:self action:@selector(newPage) forControlEvents:UIControlEventTouchUpInside];
[rootView addSubview:buttonBar];
}
这是buttonBar调用的方法:
-(void)newPage{
UIDetailController *paginaGenerica = [[UIDetailController alloc] initWithNibName:@"UIDetailController" bundle:nil];
[[StackScrollViewAppDelegate instance].rootViewController.stackScrollViewController addViewInSlider:paginaGenerica invokeByController:self isStackStartView:FALSE];
}
当我第一次触摸按钮时,一切正常。但是,当我再次触摸它时,我会收到:
2012-01-23 10:53:46.263 StackScrollView[1048:f803] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM removeObjectAtIndex:]: index 2147483648 beyond bounds [0 .. 1]'
*** First throw call stack:
事实上,当我尝试为rootView设置动画时,我会收到同样的消息(让整个内容向右移动,稍后再回来,当我在特定视图上滑动时)也会超过1次。
但是,我将相同的按钮和方法添加到UIDetailController.m(使自己的View在其自身之上添加新视图,就像tableViews在StackScrollView的原始实现上工作一样),然后,一切都运行良好。 / p>
我认为问题出在“StackScrollViewController.m”中,但是,我对编程很新,所以,我不理解代码的相同部分。如果,有人已经使用StackViewController并且遇到这种情况可能有帮助...
感谢。
答案 0 :(得分:0)
首次点击按钮时进行以下更改
[[StackScrollViewAppDelegate instance].rootViewController.stackScrollViewController addViewInSlider:paginaGenerica invokeByController:self isStackStartView:**TRUE**];
并且每次连续点击paginaGenerica视图
[[StackScrollViewAppDelegate instance].rootViewController.stackScrollViewController addViewInSlider:paginaGenerica invokeByController:self isStackStartView:FALSE];