0

我现在有一个几乎完全完成的应用程序进行测试 - 只剩下一些错误修复。不幸的是,客户决定他们希望应用程序的整个主页都位于滚动视图内(以便底部的表格有更多空间)。我已经设置了所有内容,我真的不想移动所有内容并更改引用。有没有一种简单的方法可以将主视图的类更改为滚动视图?我已经尝试在 IB 中更改类并在init方法中设置类类型。如果没有,我可能会将视图的顶部放入一个 nib 文件并将其作为自定义单元格加载。

-编辑-我最终改变了 IB 中的类类型,然后做

[(UIScrollView *) self.view setScrollEnabled:YES];
[(UIScrollView *) self.view setContentSize:CGSizeMake(0,2000)];

viewDidLoad. 感谢您的帮助,希望我能接受您所有的答案。

4

4 回答 4

1

当您提到 时[self view],我将假设您的意思是在视图控制器中。视图控制器的视图可以是派生自 UIView 的任何视图。因此,滚动视图是完全可以接受的。

I don't really want to move everything and change references.

你要搬什么?为什么你必须改变参考?您唯一需要做的就是向您的视图控制器添加一个滚动视图,将视图控制器视图设置为它,并将当前视图作为子视图添加到新的滚动视图中。无需更改任何引用,无需移动任何内容。

于 2012-07-30T16:35:24.007 回答
1

请参阅视图控制器文档中的loadView方法。

这是一个简单的(未经测试!)示例

- (void)loadView {
   UIScrollView *scrollView = [[UIScrollView alloc] init] autorelease];

   //Set the properties of scrollview appropriately....

   self.view = scrollView;
 }

现在您的视图控制器的根视图将是一个滚动视图。

注意 - 如文档所述,如果您使用界面构建器来初始化您的视图/视图控制器,请不要这样做。从你的描述中我无法判断是否是这种情况。如果是,您应该能够在界面生成器中更改视图类型。

于 2012-07-30T17:07:07.923 回答
1

您需要设置滚动视图的contentSize属性。

由于您使用的是 IB,因此最简单的方法是将所有 UI 元素放入一个视图中,然后将此单个视图添加到您的滚动视图中。在该viewDidLoad方法中,将滚动视图的内容大小设置为与包含所有 UI 的视图大小相同。

顺便说一句,有比沿着视图层次结构更简单的方法来引用视图,就像您似乎正在做的那样。viewcontroller.view.something.tableview. 从 IB 中的视图控制器添加与表视图的连接,该表视图在视图层次结构中的位置无关紧要。viewcontroller.tableview无论您如何重新排列您的笔尖,您都可以从.

于 2012-07-30T17:19:39.673 回答
0

我认为你必须使用正确类型的指针。Google 地图的示例:假设您将基本视图的类更改为GMSMapView.

MapViewController.h

@property GMSMapView *mapView;

MapViewController.m

-(void)awakeFromNib{
    [super awakeFromNib];
    self.mapView = (GMSMapView*)self.view;
    // ... etc.
}
于 2014-02-25T08:46:46.110 回答