2

我很难在我的详细视图上实现简单的滚动。

该应用程序很简单,带有主视图和详细视图。

当用户在 Master 上点击一个项目时,会推送 Detail 视图,其中包含更大的照片、博客文本等。

我想滚动整个细节视图,所以如果图片很高,或者文本很长,他们可以垂直滚动以查看/阅读更多内容。我不希望用户单独滚动这些项目。它应该感觉像网页滚动。

目前我的细节视图加载正常,但我不能让它滚动。

我的DetailViewController.h

    #import <UIKit/UIKit.h>

    @interface DetailViewController : UIViewController {
        IBOutlet UILabel     *postTextLabel; // wired to Text Label
        IBOutlet UILabel     *postAuthorNameLabel; // wired to Author Label
    }

    @property (strong, nonatomic) id detailItem;
    @end

我的DetailViewController.m

#import "DetailViewController.h"

@interface DetailViewController ()
- (void)configureView;
@end

@implementation DetailViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self configureView];
}

- (void)configureView
{
    if (self.detailItem) {
        NSDictionary *post           = self.detailItem;
        NSString     *postText       = [post objectForKey:@"post_text"];
        NSString     *postAuthorName = [post objectForKey:@"post_author_name"];

        postTextLabel.text       = postText;
        postAuthorNameLabel.text = postAuthorName;
    }
}
@end

IB的结构:

在此处输入图像描述

关于使这项工作缺少什么的任何想法?

4

1 回答 1

2

我会做以下事情:

1)(可选)通过将您的视图拖到侧面scruture列表中的视图中,将其转换为滚动视图。

2)将scrollView链接到您的viewcontroller .h并建立一个类似这样的Outlet连接

@property (strong, nonatomic) IBOutlet UIScrollView *scroller;

(如果手动添加,请确保在 .m 中添加 @synthesize)并确保它已在 IB 中连接!

3)在viewDidLoad方法中设置scrollview的contentsize

scroller.contentSize =  CGSizeMake(320,550);

注意:IBOutlet UILabel *postTextLabel; 实际上应该可能是 UITextView 所以你可以访问 ContentSize 这将允许以下内容。

CGRect frame = postTextLabel.frame;
frame.size = postTextLabel.contentSize;
postTextLabel.frame = frame;
scroller.contentSize = CGSizeMake(320, frame.size.height+200);//200 or how ever much space is above the textView

并且只有当你使用 UITextView 时才有效

对于 ipad,将 320 替换为 768 或 1024,或者取决于方向

在 IB 中连接它的最佳方法是按住控件并拖动到 .h 文件,并确保它设置为如图所示的自动,并指向>视图的 .h。像这样添加它也会自动为您添加@synthesize。

在此处输入图像描述

在此处输入图像描述

确保在此处为我们的滚动视图选中 UserInteractionsEnabled

于 2012-09-30T18:38:07.837 回答