0

我正在尝试制作自己的自定义委托,以便将数据传递回前一个视图控制器,它给了我“找不到 JournalrComposeViewControllerDelegate 的协议声明”,即使它已明确定义并包含头文件。请帮助!代码:试图订阅 JournalrComposeViewController 的自定义委托的 JournalrViewController .h 文件:

//  JournalrViewController.h
//  Journalr
//
//  Created by Kevin Turner on 7/16/13.
//  Copyright (c) 2013 Kevin Turner. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "JournalrAppDelegate.h"
#import "JournalrComposeViewController.h"

@interface JournalrViewController : UIViewController <JournalrComposeViewControllerDelegate>
@property (nonatomic, readwrite) CGFloat cY;
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
@property (nonatomic) BOOL returning;
@property (nonatomic, strong) IBOutlet UILabel *entryLabel;
@property (nonatomic) int totlal;

@end

JournalrViewController .m 文件:

    //
//  JournalrViewController.m
//  Journalr
//
//  Created by Kevin Turner on 7/16/13.
//  Copyright (c) 2013 Kevin Turner. All rights reserved.
//

#import "JournalrViewController.h"
#import <QuartzCore/QuartzCore.h>
#import "JournalrComposeViewController.h"

@interface JournalrViewController ()

@end

@implementation JournalrViewController
@synthesize cY;
@synthesize scrollView;
@synthesize entryLabel;
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    cY = 50;
    self.returning = NO;

        [self fetchEntrys];
}


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}



-(void)deleteButtonPressed
{
    NSLog(@"Button Pressed");
}

- (void)fetchEntrys
{

    JournalrAppDelegate *appDelegate =
    [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context =
    [appDelegate managedObjectContext];

    NSEntityDescription *entityDesc =
    [NSEntityDescription entityForName:@"Entrys"
                inManagedObjectContext:context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDesc];

    //NSPredicate *pred =
    //[NSPredicate predicateWithFormat:@"(photoName = %@)",
     //@"1234"];
    //[request setPredicate:pred];
    NSManagedObject *matches = nil;

    NSError *error;
    NSArray *objects = [context executeFetchRequest:request
                                              error:&error];

    if ([objects count] == 0) {
        NSLog(@"No matches");
    } else {


        NSLog(@"Matches found");



        matches = objects[1];

        NSString *firstEntry = [matches valueForKey:@"entry"];
        NSLog(@"First Entry: %@", firstEntry);
        self.totlal = [objects count];
         int i = [objects count] - 1;
        NSLog(@"%i", i);
        while ( i >  -1) {
            matches = objects[i];
            NSString *entry = [matches valueForKey:@"entry"];
            NSDate *date = [matches valueForKey:@"date"];
            NSDateFormatter *formatDate = [[NSDateFormatter alloc]init];
            [formatDate setDateFormat:@"MM/dd/YY"];
            NSString *dateString = [formatDate stringFromDate:date];


            NSLog(@"Date: %@", dateString);
             NSLog(@"Entry: %@", entry);

            UILabel *dateLabel = [[UILabel alloc] init];
            dateLabel.text = dateString;
            dateLabel.frame = CGRectMake(20, cY, 100, 30);
            dateLabel.numberOfLines = 3;
            dateLabel.font = [UIFont boldSystemFontOfSize:24.0];

            UIButton *deleteButton  = [[UIButton alloc]initWithFrame:CGRectMake(230, dateLabel.frame.origin.y, 70, 27)];
            [deleteButton addTarget:self action:@selector(deleteButtonPressed) forControlEvents:UIControlEventTouchDown];
            [deleteButton setBackgroundImage:[UIImage imageNamed:@"delete.jpg"] forState:UIControlStateNormal];


            cY += 35;

            UILabel *labelEntry = [[UILabel alloc]init];
            labelEntry.numberOfLines = 0;
            labelEntry.text = entry;
            CGRect lblFrame =  CGRectMake(20, cY, 280, 1000);
            labelEntry.frame = lblFrame;
            labelEntry.textAlignment = NSTextAlignmentLeft;
            labelEntry.backgroundColor = [UIColor clearColor];
            [labelEntry sizeToFit];





            UILabel *outerLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, cY - 50, 300, labelEntry.frame.size.height + 80)];
            [scrollView addSubview:outerLabel];

            outerLabel.layer.borderColor = [UIColor grayColor].CGColor;
            outerLabel.layer.borderWidth = 1.0;

            //UIImageView *backgroundImage = [[UIImageView alloc]initWithFrame:CGRectMake(10, cY, 312, labelEntry.frame.size.height)];
            //backgroundImage.contentMode = UIViewContentModeScaleToFill;
            //backgroundImage.image = [UIImage imageNamed:@"post.jpg"];
            //NSLog(@"Image Height :%f", backgroundImage.frame.size.height);

            //[scrollView addSubview:backgroundImage];






            cY += labelEntry.frame.size.height;
            NSLog(@"Label Height: %f", labelEntry.frame.size.height);
            NSLog(@"currenty: %f", cY);
            cY += 100.f;

            scrollView.scrollEnabled = YES;
            scrollView.showsVerticalScrollIndicator = YES;
            [scrollView addSubview: labelEntry];
            [scrollView addSubview:dateLabel];
            [scrollView addSubview:deleteButton];

                        i--;
        }

        scrollView.contentSize = CGSizeMake(320, cY);
        NSLog(@"cY: %f", cY);

     }


}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    JournalrComposeViewController* controller = [segue destinationViewController];
    controller.delegate = self;
}

-(void)refresh {
    NSLog(@"IT WORKED!");

}



@end

JournalrComposeViewController .h 文件:

//
//  JournalrComposeViewController.h
//  Journalr
//
//  Created by Kevin Turner on 7/17/13.
//  Copyright (c) 2013 Kevin Turner. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "JournalrAppDelegate.h"

@class JournalrComposeViewController;

@protocol JournalrComposeViewControllerDelegate <NSObject>

-(void)refresh;

@end

@interface JournalrComposeViewController : UIViewController<UITextViewDelegate>

@property (strong, nonatomic) IBOutlet UITextView *textView;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *saveButton;
- (IBAction)save:(id)sender;
- (IBAction)cancel:(id)sender;
@property (nonatomic, assign) id <JournalrComposeViewControllerDelegate>delegate;
@end

最后是 JournalrComposeViewController .m 文件:

//
//  JournalrComposeViewController.m
//  Journalr
//
//  Created by Kevin Turner on 7/17/13.
//  Copyright (c) 2013 Kevin Turner. All rights reserved.
//

#import "JournalrComposeViewController.h"
#import "JournalrViewController.h"
@interface JournalrComposeViewController ()

@end

@implementation JournalrComposeViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self.textView becomeFirstResponder];
    self.textView.delegate = self;
    self.saveButton.enabled = self.textView.text.length > 0;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{


}



- (void)textViewDidChange:(UITextView *)textView
{
 self.saveButton.enabled = self.textView.text.length > 0;   
}


- (IBAction)save:(id)sender {



    NSDate *date = [NSDate date];


    NSLog(@"%@", date);

    JournalrAppDelegate *appDelegate =
    [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *context =
    [appDelegate managedObjectContext];
    NSManagedObject *newEntry;
    newEntry = [NSEntityDescription
                  insertNewObjectForEntityForName:@"Entrys"
                  inManagedObjectContext:context];

    [newEntry setValue: self.textView.text forKey:@"entry"];
    [newEntry setValue: date forKey:@"date"];
    [newEntry setValue: @"1234" forKey:@"photoName"];
    NSError *error;
    [context save:&error];
    JournalrViewController *journalr = [[JournalrViewController alloc]init];
    journalr.returning = TRUE;

    [self.delegate refresh];

    [self dismissViewControllerAnimated:YES completion:^{

    }];

}

- (IBAction)cancel:(id)sender {
    [self dismissViewControllerAnimated:YES completion:^{

    }];

}
@end
4

0 回答 0