通过编程方式创建多个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];
}
答案 0 :(得分:1)
你可以做几件事
1。)更改方法签名以返回NSButton。在调用create按钮的方法中,您可以将所有按钮添加到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
}
}
答案 1 :(得分:0)
我解决了这个问题,非常简单,我使用NSMutableArray存储我创建的所有按钮,然后您可以访问并对此数组中的任何按钮执行任何操作。
答案 2 :(得分:0)
您需要更改返回按钮实例的方法签名。您还需要删除要添加到上下文创建按钮的部分。
对于非ARC世界,您还需要自动释放返回的对象。
安德烈