我现在有一个应用程序用于测试,几乎完全完成 - 只剩下一些bug修复。不幸的是,客户决定他们希望应用程序的整个主页位于滚动视图内(这样底部的桌子就有更多的空间)。我已经完成了所有设置,我真的不想移动所有内容并更改引用。有没有一种简单的方法可以将主视图的类更改为滚动视图?我已经尝试在IB中更改类并在init
方法中设置类类型。如果没有,我可能只是将视图的顶部部分抛出到nib文件中并将其加载为自定义单元格。
-EDIT - 我最终改变了IB中的类类型然后再做
[(UIScrollView *) self.view setScrollEnabled:YES];
[(UIScrollView *) self.view setContentSize:CGSizeMake(0,2000)];
viewDidLoad
中的。感谢您的帮助,希望我能接受您的所有答案。
答案 0 :(得分:1)
当您提到[self view]
时,我将假设您在视图控制器中的意思。视图控制器的视图可以是从UIView派生的任何视图。因此,滚动视图是完全可以接受的。
I don't really want to move everything and change references.
你需要搬家的是什么?你为什么要改变参考?您需要做的只是向视图控制器添加滚动视图,将视图控制器视图设置为它,并将当前视图作为子视图添加到新的滚动视图。不需要更改引用,不需要移动任何引用。
答案 1 :(得分:1)
请参阅视图控制器文档中的loadView 方法。
这是一个简单的(未经测试的!)示例
- (void)loadView {
UIScrollView *scrollView = [[UIScrollView alloc] init] autorelease];
//Set the properties of scrollview appropriately....
self.view = scrollView;
}
现在,视图控制器的根视图将是滚动视图。
注意的 - 如文档所述,如果使用界面构建器初始化视图/视图控制器,请不要这样做。如果不是这样的话,我无法从你的描述中看出来。如果是,您应该能够在界面构建器中更改视图类型。
答案 2 :(得分:1)
您需要设置滚动视图的contentSize
属性。
由于您使用的是IB,最简单的方法是将所有UI元素放入视图中,并将此单个视图添加到滚动视图中。在viewDidLoad
方法中,将scrollview的内容大小设置为与包含所有UI的视图相同的大小。
顺便说一句,除了走视图层次结构之外,还有更简单的方法来引用视图,就像你似乎正在做的那样。 viewcontroller.view.something.tableview
。从IB中的视图控制器添加到tableview的连接,并且视图层次结构中该tableview的位置无关紧要。无论你如何重新排列你的笔尖,你总能从viewcontroller.tableview
到达它。
答案 3 :(得分:0)
我认为你必须使用具有正确类型的指针。 Google地图的示例:假设您已将基本视图的类更改为GMSMapView
。
<强> MapViewController.h 强>
@property GMSMapView *mapView;
<强> MapViewController.m 强>
-(void)awakeFromNib{
[super awakeFromNib];
self.mapView = (GMSMapView*)self.view;
// ... etc.
}