It looks like the buttons may be hooked up to an object of the wrong class? 
Your actions aren’t defined in NSConcreteHashTable. Check your connections.

David

> On Sep 3, 2015, at 7:09 AM, Dave <[email protected]> wrote:
> 
> Hi,
> 
> This is a Mac Project.
> 
> I’m getting an Unrecognized Selector Exceptions when clicking on a Button 
> Control:
> 
> 2015-09-03 12:46:04.464 LTWTest1[1970:896242] -[NSConcreteHashTable 
> leftButtonAction:]: unrecognized selector sent to instance 0x6000001221c0
> 2015-09-03 12:46:04.464 LTWTest1[1970:896242] -[NSConcreteHashTable 
> leftRightAction:]: unrecognized selector sent to instance 0x6000001221c0
> 2015-09-03 12:46:04.464 LTWTest1[1970:896242] -[NSConcreteHashTable 
> toggleDisclosureAction:]: unrecognized selector sent to instance 
> 0x6000001221c0
> 
> I’ve checked in IB and the controls in question seem to be wired up correctly.
> 
> The way this works is that I have a WindowController that has a NIB file 
> which contains a View Hierarchy. The WindowController then creates an 
> Instance of a View Controller (LTWDetailViewController) and adds its View to 
> a StackView which is inside a Scroll View. The View Outlets seem to be wired 
> up ok, but the IBAction’s cause an Exception.
> 
> Please see the following code:
> 
> LTWDisclosureViewController.h
> 
> @interface LTWDisclosureViewController : NSViewController
> {
> NSView*                                       _disclosedView;
> BOOL                                  _disclosureIsClosed;
> }
> 
> @property (nonatomic,weak) IBOutlet NSTextField*                              
>         titleTextField;
> @property (nonatomic,weak) IBOutlet NSButton*                                 
>         disclosureButton;
> @property (nonatomic,weak) IBOutlet NSView*                                   
>         headerView;
> 
> 
> -(IBAction) toggleDisclosureAction:(id) theSender;                            
>                         //***** Causes Exception when Clicked (the methods 
> are defined in the corresponding .m file).
> 
> @end
> 
> ——————————————————————————————————————————————
> LTWDetailViewController.h
> 
> @interface LTWDetailViewController : LTWDisclosureViewController
> {
> }
> 
> -(id) initWithWindowKind:(NSString*) theWindowKind;
> -(NSView*) startup;
> 
> @property (nonatomic,weak)    IBOutlet NSView*                                
>                 pDetailView;
> 
> 
> -(IBAction) leftButtonAction:(id) theSender;                                  
>                 //***** Causes Exception when Clicked (the methods are 
> defined in the corresponding .m file).
> -(IBAction) rightButtonAction:(id) theSender;                                 
>                 //***** Causes Exception when Clicked (the methods are 
> defined in the corresponding .m file).
> 
> @end
> 
> 
> 
> 
> ——————————————————————————————————————————————
> 
> This code is in the Window Controller, setupStackView is called from 
> awakeFromNib.
> 
> -(void) setupStackView 
> {
> CGFloat                                                       myMinunumWidth;
> NSView*                                                       myDetailView;
> BOOL                                                  
> myClipStackViewHorizFlag;
> NSMutableDictionary*                  myViewsDictionary;
> NSNotificationCenter*                 myNotificationCenter;
> LTWDetailViewController*              myValidationDetailViewController;
> 
> myNotificationCenter = [NSNotificationCenter defaultCenter];
> 
> myValidationDetailViewController = [[LTWDetailViewController alloc] 
> initWithWindowKind:@"Validation"];
> 
> [myValidationDetailViewController setTitle:@"***** Test Title 1 *****"];
> myDetailView = myValidationDetailViewController.view;
> 
> 
> [self.pValidationListStackView addView:myDetailView 
> inGravity:NSStackViewGravityTop];
> 
> //**    
> //**  Use the size of this view as an Minimum
> //**
> myMinunumWidth = myDetailView.frame.size.width;
> 
> //**    
> //**  Vertically Centered Stack  
> //**    
> self.pValidationListStackView.orientation = 
> NSUserInterfaceLayoutOrientationVertical;
> self.pValidationListStackView.alignment = NSLayoutAttributeTop;
> self.pValidationListStackView.spacing = 0;
> 
> //**    
> //**  Do Not Hug Horizontally - Let the Fixed Width Subviews Float Centrally
> //**    
> [self.pValidationListStackView setHuggingPriority:NSLayoutPriorityDefaultLow 
> forOrientation:NSLayoutConstraintOrientationHorizontal];
> 
> //**    
> //**  Allow StackView Clipping
> //**    
> myClipStackViewHorizFlag = YES;
> 
> //**    
> //**  Do Not Resist clipping Horizontally
> //**
> //**  NSScrollView Wrapper Will Allow the Clipped View to be Scrolled into 
> View.
> //**    
> if (myClipStackViewHorizFlag == YES)
>       [self.pValidationListStackView 
> setClippingResistancePriority:NSLayoutPriorityDefaultLow 
> forOrientation:NSLayoutConstraintOrientationHorizontal];
> 
> //**    
> //**  The StackView Min Width Will Match the SubView Minimum Width
> //**    
> else 
>       [self.pValidationListStackView 
> setClippingResistancePriority:NSLayoutPriorityDefaultHigh 
> forOrientation:NSLayoutConstraintOrientationHorizontal];
> 
> //**    
> //**  Hug vertically  
> //**    
> [self.pValidationListStackView setHuggingPriority:NSLayoutPriorityDefaultHigh 
> forOrientation:NSLayoutConstraintOrientationVertical];
> 
> //**    
> //**  Do Not Resist Clipping Vertically
> //**    
> [self.pValidationListStackView 
> setClippingResistancePriority:NSLayoutPriorityDefaultLow 
> forOrientation:NSLayoutConstraintOrientationVertical];
>       
> self.pValidationIssueScrollView.translatesAutoresizingMaskIntoConstraints = 
> NO;
> NSAssert(self.pValidationIssueScrollView.contentView.isFlipped,@"ScrollView 
> Clip View must be flipped?");
>       
>       
> //**    
> //**  Add stack view to the scrollview
> //**    
> [self.pValidationIssueScrollView 
> setDocumentView:self.pValidationListStackView];
> 
> //**    
> //**  the StackView Width is Constrained to Match the ScrollView Width.
> //**
> //**  Note: this arrangement will not not show the horizontal scroller when 
> clippng as the stackview width matches the scrollvew width.
> //**  to show the horiz scroller remove these constraints when the view size 
> hits the minWidth limit.
> //**    
> myViewsDictionary = [[NSMutableDictionary alloc] init];
> [myViewsDictionary setObject:self.pValidationListStackView 
> forKey:@"stackView"];      
> 
> self.stackViewConstraints = [NSLayoutConstraint 
> constraintsWithVisualFormat:@"H:|-0-[stackView]-0-|" options:0 metrics:nil 
> views:myViewsDictionary];
> [self.pValidationIssueScrollView addConstraints:self.stackViewConstraints];
> self.horizontalConstraintsApplied = YES;
> 
> if (myClipStackViewHorizFlag == YES) 
>       {
>       
> //**    
> //**  Observe the scroll view frame and update the horizontal constraint as 
> required
> //**    
>       self.frameObserver = [myNotificationCenter 
> addObserverForName:NSViewFrameDidChangeNotification
>                                                                               
>                                object:self.pValidationIssueScrollView 
> queue:nil
>                                                                               
>                        usingBlock:^(NSNotification*     theNotification)
>               {
>               if (self.pValidationIssueScrollView.frame.size.width < 
> myMinunumWidth) 
>                       {
>                       if (self.horizontalConstraintsApplied == YES) 
>                               {
>                               [self.pValidationIssueScrollView 
> removeConstraints:self.stackViewConstraints];
>                               self.horizontalConstraintsApplied = NO;
>                               }
>                       
>                       } 
>               else 
>                       {
>                       if (!self.horizontalConstraintsApplied) 
>                               {
>                               [self.pValidationIssueScrollView 
> addConstraints:self.stackViewConstraints];
>                               self.horizontalConstraintsApplied = YES;
>                               }
>               }
>       }];
>       }
> }
> 
> 
> //*****************************************************************************************
> //**
> //**  initWithWindowKind: 
> //**
> //*****************************************************************************************
> -(instancetype) initWithWindowKind:(NSString*) theWindowKind
> {
> NSString*                                             myNIBName;
> 
> myNIBName = @"ValidationWindow";
> self = [super initWithWindowNibName:myNIBName];
> if (self == nil)
>       return nil;
> 
> return self;
> }
> 
> 
> //*****************************************************************************************
> //**
> //**  awakeFromNib 
> //**
> //*****************************************************************************************
> -(void) awakeFromNib 
> {
> [self validationSetupStackView];
> }
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> 
> Cocoa-dev mailing list ([email protected])
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/david%40dwdurkee.com
> 
> This email sent to [email protected]


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to