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 (Cocoa-dev@lists.apple.com)

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 arch...@mail-archive.com

Reply via email to