我有另一个我自己无法解决的简单问题。我有两个xib。用户输入的main.xib和结果的result.xib。在input-xib上按下按钮时,Xib2启动。 按钮操作(在AppDelegate.m中):
- (IBAction)pushRun:(id)sender {
if (!rwc)
{
rwc = [[ResultWindowController alloc] init];
}
[rwc setValueArray:[toDoItemArrayController arrangedObjects]];
[rwc setNumberOfCalculations:[NSNumber numberWithInt:[_inputNumberOfCalculations intValue]]];
[rwc calculateResults]; //starts method in 2nd-window controller for result calculation
[rwc showWindow:self];
}
rwc
是WindowController
进行计算并显示result.xib(ResultWindow
):
ResultWindowController.h:
#import <Cocoa/Cocoa.h>
@interface ResultWindowController : NSWindowController{
NSArray *valueArray;
NSMutableArray *resultArray;
NSNumber *numberOfCalculations;
}
@property (nonatomic, retain, readwrite) NSArray *valueArray;
@property (retain) NSNumber *numberOfCalculations;
@property (nonatomic, retain, readwrite) NSMutableArray *resultArray;
-(void)calculateResults;
@end
ResultWindowController.m:
#import "ResultWindowController.h"
#import "ResultItem.h" //my result model
@implementation ResultWindowController
@synthesize valueArray, resultArray, numberOfCalculations;
- (id)init
{
if(![super initWithWindowNibName:@"ResultWindow"])
return nil;
return self;
}
-(void)awakeFromNib
{
}
- (void)windowDidLoad
{
[super windowDidLoad];
}
- (void)calculateResults
{
//a lot of calculation code ...
ResultItem *newResult = [[ResultItem alloc]init];
[newResult setValue:[nameArray objectAtIndex:i] forKey:@"name"];
[newResult setValue:[NSNumber numberWithDouble:avg] forKey:@"averageValue"];
[newResult setValue:[NSNumber numberWithDouble:min] forKey:@"minValue"];
[newResult setValue:[NSNumber numberWithDouble:max] forKey:@"maxValue"];
[newResult setValue:dimensionRandomArray forKey:@"randomArray"];
[resultArray addObject:newResult];
}
结果放在模型对象中并收集在resultArray
中。
现在它会变得有趣(至少对我而言):
resultArray
通过BindingInspector绑定为NSArrayController
的内容NSArrayController
是result.xib tableview
(没有自己的类或viewcontroller)tableview
列通过NSArrayController
resultArray
醇>
当result.xib窗口启动时,一切正常。 tableview
按预期显示内容。但!当我在input.xib上进行更改并再次按下操作按钮时,result.xib上的tableview
不会更新。
我检查了resultArray
内容(通过NSLog)并获得了所有新值,因此工作正常。
我的问题出在哪里?
我读了很多[tableView reloadData]
,但我不知道如何设置代码和必要的绑定。
答案 0 :(得分:0)
不是将对象添加到数组中,而是将IBOutlet创建到数组控制器,并使用方法addObject:
将对象添加到表视图中。