我尝试在用户按NSSearchField
上的Enter键后将文本从NSSearchField
添加到NSTableView。我为NSTableView和NSSearchField
创建了2个委托。
我在SearchFieldController
(代理)中使用以下代码:
-(void)controlTextDidEndEditing:(NSNotification *)notification
{
// See if it was due to a return
if ( [[[notification userInfo] objectForKey:@"NSTextMovement"] intValue] == NSReturnTextMovement )
{
NSArray *myarr = [NSArray arrayWithObjects:@"123" ,@"456" , @"789" , nil];
[(TableViewController *) MySelf addObjects:myarr];
NSLog(@"Return was pressed!");
}
}
SearchFieldController.h:
#import <Foundation/Foundation.h>
#import "TableViewController.h"
@interface SearchFieldController : NSSearchField{
@public
IBOutlet NSSearchField *searchField;
BOOL isEnterKey;
TableViewController *MySelf;
}
//@property (assign) BOOL isEnterKey;
@end
并在TableViewController.m(Delegate)中用于添加对象的此函数:
- (void)addObjects:(NSArray *)Objects{
for (NSString *file in Objects) {
Item *item = [[Item alloc] init];
item.name = file;
[list addObject:item];
[tableView reloadData];
[item release];
}
}
但是当我测试该应用程序时,什么也没发生!什么都没有添加到我的
UITableView
中,我也没有得到任何错误!知道我在做什么错吗? 最佳答案
您在其中添加对象后忘记保留数组。
- (void)addObjects:(NSArray *)Objects{
for (NSString *file in Objects) {
Item *item = [[Item alloc] init];
item.name = file;
[list addObject:item];
[list retain];
[tableView reloadData];
[item release];
}
}