委托IBAction

时间:2013-04-10 06:45:05

标签: iphone ios objective-c xcode

这就是我的课程中写的内容

settingViewController.h

@class settingViewController;

@protocol settingViewDelegate <NSObject>

- (void)modalDoneDel :(settingViewController *)controller;

@end

@interface settingViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

@property (nonatomic, weak) id <settingViewDelegate> delegate;

- (IBAction)modalDone:(id)sender;

@end

settingViewController.m

@synthesize delegate;

- (IBAction)modalDone:(id)sender {

[self.delegate modalDoneDel:self];

} 

leftViewController.h

#import "settingViewController.h"

@interface leftViewController : UIViewController <UITableViewDataSource,        UITableViewDelegate, settingViewDelegate> 

@property (strong, nonatomic) IBOutlet UIView *menuView;

- (IBAction)test:(id)sender;

@end

leftViewController.m

#import "leftViewController.h"

@interface leftViewController ()

@implementation leftViewController


-(void)modalDoneDel:(settingViewController *)controller{

NSLog(@"ss");
}

为什么没有出现在控制台“ss”上?哪里有错误?

2 个答案:

答案 0 :(得分:1)

可能的问题

您需要将委托分配给您的课程对象。如果你忘了这个,你的委托方法将不会被调用。

所以你必须在某处调用settingViewController。

SettingViewController * settingViewController = [settingViewController alloc]init];
settingViewController.delegate = self; // VERY IMP

答案 1 :(得分:0)

settingViewController.h

#import <UIKit/UIKit.h>
#import "SetNameCell.h"
#import "SetDateCell.h"
#import "UIViewController+Alerts.h"

@class settingViewController;

@protocol settingViewDelegate <NSObject>

- (void)modalDoneDel :(settingViewController *)controller;

@end

@interface settingViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {

    SetNameCell *nameCell;
    SetDateCell *dateCell;

}


@property (nonatomic, assign) id <settingViewDelegate> delegate;

@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (weak, nonatomic) IBOutlet UINavigationBar *navBarOut;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *cancelButton;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *doneButton;


- (IBAction)modalDone:(id)sender;



@end

settingViewController.m

#import "settingViewController.h"
#import <QuartzCore/QuartzCore.h>

@implementation settingViewController

@synthesize delegate;

- (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.


    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"LightYopTexturedPaperWisoutBorder"] forBarMetrics:UIBarMetricsDefault];

}

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 2;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

     NSString *CellIdentifier;

    self.tableView.separatorColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg_stitch.png"]];

    if(indexPath.row == 0) {

        CellIdentifier = @"Name";
        nameCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        return nameCell;


    } else {

        CellIdentifier = @"Date";
        dateCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        return dateCell;

    }
}


- (IBAction)modalDone:(id)sender {

    [self.delegate modalDoneDel:self];

} 
@end 

leftViewController.h

#import <UIKit/UIKit.h>
#import "JASidePanelController.h"
#import "UIViewController+JASidePanel.h"
#import "CoreData/CoreData.h"
#import "SetNameCell.h"
#import "SetDateCell.h"
#import "MenuCell.h"
#import "settingViewController.h"
#import "UIViewController+Alerts.h"


@interface leftViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, settingViewDelegate> {

    NSMutableArray *_items;
    MenuCell *cell;

    Boolean *addStar;

    UIViewController *settingView;
    UIView *currentView;
    UIView *theWindow;

}

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (strong, nonatomic) IBOutlet UIView *menuView;

- (IBAction)test:(id)sender;
- (IBAction)test1:(id)sender;

- (IBAction)editMenu:(id)sender;


@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (weak, nonatomic) IBOutlet UIButton *editButtonOut;
@property (strong, nonatomic) IBOutlet UIView *pickerView;
@property (weak, nonatomic) IBOutlet UIButton *addDoneOut;
@property (weak, nonatomic) IBOutlet UIView *footer;
@property (weak, nonatomic) IBOutlet UIButton *settingOut;
@property (weak, nonatomic) IBOutlet UIView *leftContView;

@end

leftViewController.m

#import "leftViewController.h"
#import "QuartzCore/QuartzCore.h"

#define kModalSeguePushedBackAnimationDuration 0.3
#define kModalSegueBringForwardAnimationDuration 0.3

@interface leftViewController ()

@end


@implementation leftViewController


@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;


- (void)viewDidLoad
{
    [super viewDidLoad];

    settingViewController *setingViewController = [[settingViewController alloc] init];
    setingViewController.delegate = self;

    _items = [[NSMutableArray alloc] init];

    self.footer.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"LightYopTexturedPaperWisoutBorder"]];

    _editButtonOut.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"LightBlueTexturedPaper.png"]];
    _editButtonOut.layer.borderColor = [UIColor lightGrayColor].CGColor;
    _editButtonOut.layer.borderWidth = 0.9f;
    _editButtonOut.layer.cornerRadius = 5.0f;

    _leftContView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"LightYopTexturedPaperWisoutBorder"]];
    _leftContView.layer.cornerRadius = 5.0f;

    _addDoneOut.hidden = YES;

}


- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    // The table view should not be re-orderable.
    return YES;
}

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {


}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 5;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString *CellIdentifier = @"Cell";

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    UIView *bgview = [[UIView alloc] initWithFrame:CGRectZero];

    bgview.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"LightYopTexturedPaper"]];
    cell.backgroundView = bgview;

    UIView *bgviewselect = [[UIView alloc] initWithFrame:CGRectZero];
    bgviewselect.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"LightSelectTexturedPaper.png"]];
    cell.selectedBackgroundView = bgviewselect;

    self.tableView.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"LightYopTexturedPaperWisoutBorder"]];

    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

    cell.menuLabel.highlightedTextColor = [UIColor whiteColor];

    cell.manuImg.image = [UIImage imageNamed:@"moneybox.png"];


    return cell;

}

- (IBAction)editMenu:(id)sender {

    if(!self.tableView.editing){
        [_editButtonOut setTitle:@"Done" forState:UIControlStateNormal];
        [self.sidePanelController setCenterPanelHidden:YES animated:YES duration:0.2f];
        [self.tableView setEditing: !self.tableView.editing animated:YES];
        _settingOut.hidden = YES;
          } else {

        [_editButtonOut setTitle:@"Edit" forState:UIControlStateNormal];
        [self.sidePanelController setCenterPanelHidden:NO animated:YES duration:0.2f];
        [self.tableView setEditing: NO animated:YES];
        _settingOut.hidden = NO;
    }
}



-(UIImageView*)screenshotForView: (UIView*) view {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [[UIScreen mainScreen] scale]);

    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    if ([UIApplication sharedApplication].statusBarHidden == NO) {
        CGFloat barHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
        CGFloat scale = [[UIScreen mainScreen] scale];
        CGRect rect = CGRectMake(0, barHeight * scale, view.bounds.size.width * scale, (view.bounds.size.height - barHeight) * scale);
        CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, rect);
        image = [UIImage imageWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation];
    }

    UIImageView* screenshot = [[UIImageView alloc] initWithImage:image];
    screenshot.frame = CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height);

    screenshot.layer.cornerRadius = 5.0f;
    screenshot.layer.masksToBounds = YES;

    return screenshot;
}

-(CAAnimationGroup*)animationGroupPushedBackward {
    CATransform3D t1 = CATransform3DIdentity;
    t1.m34 = 1.0 / -900;
    t1 = CATransform3DScale(t1, 0.90, 0.90, 1);
    t1 = CATransform3DRotate(t1, 15.0f * M_PI/180.0f, 1, 0, 0);

    CATransform3D t2 = CATransform3DIdentity;
    t2.m34 = 1.0 / -900;
    t2 = CATransform3DTranslate(t2, 0.0, -20.0, 0.0);
    t2 = CATransform3DScale(t2, 0.85, 0.85, 1);

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
    animation.toValue = [NSValue valueWithCATransform3D:t1];
    animation.duration = 2 * kModalSeguePushedBackAnimationDuration / 3;
    animation.fillMode = kCAFillModeForwards;
    animation.removedOnCompletion = NO;
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];

    CABasicAnimation *animation2 = [CABasicAnimation animationWithKeyPath:@"transform"];
    animation2.toValue = [NSValue valueWithCATransform3D:t2];
    animation2.beginTime = animation.duration;
    animation2.duration = kModalSeguePushedBackAnimationDuration / 3;
    animation2.fillMode = kCAFillModeForwards;
    [animation2 setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
    animation2.removedOnCompletion = NO;

    CAAnimationGroup *group = [CAAnimationGroup animation];
    group.fillMode = kCAFillModeForwards;
    group.removedOnCompletion = NO;
    [group setDuration:animation.duration * 2];
    [group setAnimations:[NSArray arrayWithObjects:animation,animation2, nil]];
    return group;
}

-(CAAnimationGroup*)animationGroupBringForward {
    CATransform3D t1 = CATransform3DIdentity;
    t1.m34 = 1.0 / -900;
    t1 = CATransform3DScale(t1, 0.90, 0.90, 1);
    t1 = CATransform3DRotate(t1, 15.0f * M_PI/180.0f, 1, 0, 0);

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
    animation.toValue = [NSValue valueWithCATransform3D:t1];
    animation.duration = kModalSegueBringForwardAnimationDuration / 2;
    animation.fillMode = kCAFillModeForwards;
    animation.removedOnCompletion = NO;
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];

    CABasicAnimation *animation2 = [CABasicAnimation animationWithKeyPath:@"transform"];
    animation2.toValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
    animation2.beginTime = animation.duration;
    animation2.duration = kModalSegueBringForwardAnimationDuration / 2;
    animation2.fillMode = kCAFillModeForwards;
    [animation2 setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];

    animation2.removedOnCompletion = NO;

    CAAnimationGroup *group = [CAAnimationGroup animation];
    group.fillMode = kCAFillModeForwards;
    group.removedOnCompletion = NO;
    [group setDuration:animation.duration * 2];
    [group setAnimations:[NSArray arrayWithObjects:animation,animation2, nil]];
    return group;
}

- (IBAction)test:(id)sender {


/*    theWindow = [self.view superview];

    [theWindow addSubview:settingView.view];

    settingView.view.frame = CGRectMake(0, theWindow.frame.size.height, theWindow.frame.size.width, theWindow.frame.size.height);

    [self.sidePanelController setCenterPanelHidden:YES animated:NO duration:0.0f];

    [_leftContView.layer addAnimation:[self animationGroupPushedBackward] forKey:nil];

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.2f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

    settingView.view.frame = CGRectMake(0, 10, theWindow.frame.size.width, theWindow.frame.size.height);

    [UIView commitAnimations];   */

    //[self presentViewController:settingView animated:YES completion:nil];

    [self.sidePanelController setCenterPanelHidden:YES animated:NO duration:0.0f];

    [_leftContView.layer addAnimation:[self animationGroupPushedBackward] forKey:nil];

    [self presentAlertViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"addNewItem"] named:@"dd" animated:YES];



}

- (IBAction)test1:(id)sender {


     [_leftContView.layer addAnimation:[self animationGroupBringForward] forKey:nil];


     [self.sidePanelController setCenterPanelHidden:NO animated:NO duration:0.0f];

}


-(void)modalDoneDel:(settingViewController *)controller{


     NSLog(@"ss");

    [self.sidePanelController setCenterPanelHidden:NO animated:NO duration:0.0f];


}

@end