1

私は正常に動作していたを持ってDetailViewControllerいます。ラベルとtextView. が選択されたときに上に移動scrollViewできるように を追加しましたが、古いラベルの下に を配置した後、ラベルにデータが表示されなくなりました。ストーリーボードを使用して UI を作成しています。スクロールビューをドロップしてラベルを上に配置するだけでうまくいくと思いました。そうではありませんでした。textViewscrollView

どうしてこれなの?

アップデート:

コードが必要な人のために、ここにあります:

#import "DetailViewController.h"

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

@implementation DetailViewController
@synthesize comment;
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3f;
#pragma mark - Managing the detail item

- (void)setDetailItem:(RootBeer*)newDetailItem
{
    if (_detailItem != newDetailItem) {
        _detailItem = newDetailItem;

        // Update the view.
        [self configureView];
    }
}

- (void)configureView
{
    // Update the user interface for the detail item.
    [self.view addSubview:];
    if (self.detailItem) {
        self.rootBeerNameLabel.text = [[self.detailItem valueForKey:@"rootBeerName"] description];
         self.rootBeerBrewerLabel.text = [[self.detailItem valueForKey:@"rootBeerBrewer"] description];
         self.rootBeerLocationLabel.text = [[self.detailItem valueForKey:@"rootBeerLocation"] description];
         self.rootBeerDescriptionLabel.text = [[self.detailItem valueForKey:@"rootBeerDescription"] description];
         self.rootBeerDetailsLabel.text = [[self.detailItem valueForKey:@"rootBeerDetails"] description];
        self.rootBeerNotes.text = self.detailItem.comments.rootBeerComment; 
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureView];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(IBAction)cancel:(id)sender{
    NSLog(@"Saved!");

    [self.navigationController popToRootViewControllerAnimated:YES];
}

-(IBAction)save:(id)sender{
    NSManagedObjectContext *context = [self managedObjectContext];
    Comments* com = [NSEntityDescription insertNewObjectForEntityForName:@"Comments" inManagedObjectContext:context];

    if(self.detailItem){
        //update current job
        [com setValue:self.rootBeerNotes.text forKey:@"rootBeerComment"];
        [com setValue:[self.detailItem valueForKey:@"rootBeerId"] forKey:@"rootBeerId"];
        [self.detailItem setValue:com forKey:@"comments"]; 

        NSError* error = nil;
        if(![context save:&error]){
            NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
        }
        NSLog(@"Saved!");

    }else{
        //create new job
        NSManagedObject *newJob = [NSEntityDescription insertNewObjectForEntityForName:@"Jobs" inManagedObjectContext:context];
        /*
        [newJob setValue:self.company.text forKey:@"company"];
        [newJob setValue:self.position.text forKey:@"position"];
        [newJob setValue:self.jobId.text forKey:@"jobId"];
        [newJob setValue:self.notes.text forKey:@"notes"];

        */
        NSError* error = nil;
        if(![context save:&error]){
            NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
        }
        NSLog(@"Saved!");
    }
    [self.navigationController popToRootViewControllerAnimated:YES];


}
-(NSManagedObjectContext *)managedObjectContext{
    NSManagedObjectContext* context = nil;
    id delegate = [[UIApplication sharedApplication]delegate];
    if([delegate performSelector:@selector(managedObjectContext)]){
        context=[delegate managedObjectContext];
    }
    return context;
}

@end
4

2 に答える 2

0

http://ios.robertlinnemann.com/configure-a-uiscrollview-entirely-in-storyboard-with-interface-builder/非常に簡単なチュートリアルですが、役に立つかもしれません。

于 2013-05-21T04:02:05.803 に答える