Как получить NSButton после его создания программно? - PullRequest
0 голосов
/ 21 октября 2011

После создания множества NSButton программным путем, как я могу вернуть его обратно и удалить его при просмотре?

Вот метод для создания NSButton

- (void)createButton:(NSString *)buttonName 
           title:(NSString *)buttonTitle
               x:(int)xValue
               y:(int)yValue
           width:(int)widthValue
          height:(int)heightValue 
        filePath:(NSString *)filePathValue 
    fileTypeCode:(enum FILE_TYPE)fileTypeValue 
        duration:(int)durationValue 
 indexOnTimeline:(int)index
{

NSButton *btn = [[NSButton alloc] initWithFrame:
                  NSMakeRect(xValue,yValue,widthValue,heightValue)];
[[_window contentView] addSubview: btn];

NSString *moreDesc = [NSString stringWithFormat:@"%@:%i:%i:%i", filePathValue, fileTypeValue, durationValue, index];
[btn setAlternateTitle:moreDesc];

[btn setTitle: buttonTitle];
[btn setTarget:self];
[btn setIdentifier:buttonName];
[btn setAction:@selector(renderMe:)];
[btn setButtonType:NSMomentaryLight];
[btn setBezelStyle:NSTexturedRoundedBezelStyle];
}

Ответы [ 3 ]

1 голос
/ 07 апреля 2013

Вы можете сделать пару вещей

1.) Измените сигнатуру метода для возврата NSButton. В методе, который вызывает кнопку создания, вы можете добавить все кнопки в NSMutableArray. В вашем заголовочном файле определите новое сильное свойство NSMutableArray * buttonArray.

- (void)callingMethod {
    self.buttonArray = [NSMutableArray array];
    [self.buttonArray addObject:[self createButton:***]]
}

- (NSButton*)createButton:(NSString *)buttonName 
           title:(NSString *)buttonTitle
               x:(int)xValue
               y:(int)yValue
           width:(int)widthValue
          height:(int)heightValue 
        filePath:(NSString *)filePathValue 
    fileTypeCode:(enum FILE_TYPE)fileTypeValue 
        duration:(int)durationValue 
 indexOnTimeline:(int)index
{

... Your code ....

return btn;
}

2.) Кроме того, вы можете получить доступ ко всем подпредставлениям, которые у вас есть, позвонив по телефону:

  NSArray* subViews = [[_window contentView] subviews];
  foreach(NSView* view in subViews) {
      if([view isMemberOfClass:[NSButton class]]) {
          NSButton* button = (NSButton*) view; 
          // Figure out if the button is the one you want and do something to it
      }
  }
0 голосов
/ 25 февраля 2013

Вам нужно изменить сигнатуру метода, возвращая экземпляр кнопки. Вам также необходимо удалить часть, в которую вы добавляете в contextView созданную кнопку.

В мире, отличном от ARC, вам также нужно автоматически выпустить возвращенный объект.

Andrea

0 голосов
/ 25 октября 2011

Я решил это очень просто, я использую NSMutableArray для хранения всех кнопок, которые я создал, затем вы можете получить доступ к любой кнопке в этом массиве и сделать что угодно.

...