Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c osx,使tableview可重新加载_Objective C_Macos_Tableview_Nsarraycontroller_Reloaddata - Fatal编程技术网

Objective c osx,使tableview可重新加载

Objective c osx,使tableview可重新加载,objective-c,macos,tableview,nsarraycontroller,reloaddata,Objective C,Macos,Tableview,Nsarraycontroller,Reloaddata,我还有一个简单的问题,我自己解决不了。我有两个XIB。main.xib用于用户输入,result.xib用于结果。按下输入xib上的按钮时,Xib2启动。 按钮操作(在AppDelegate.m中): rwc是一个执行计算并显示结果的窗口控制器。xib(ResultWindow): ResultWindowController.h: #import <Cocoa/Cocoa.h> @interface ResultWindowController : NSWindowControl

我还有一个简单的问题,我自己解决不了。我有两个XIB。main.xib用于用户输入,result.xib用于结果。按下输入xib上的按钮时,Xib2启动。 按钮操作(在AppDelegate.m中):

rwc
是一个执行计算并显示结果的
窗口控制器。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
结果将放在模型对象中,并在
resultArray
中收集。 现在它将变得有趣(至少对我来说):

  • resultArray
    通过BindingInspector作为内容绑定到
    NSArrayController
  • NSArrayController
    是结果的一部分。xib
  • result.xib有一个
    表视图
    (没有自己的类或viewcontroller)
  • tableview
    列通过
    resultArray中使用的键值绑定到
    NSArrayController
  • 当result.xib窗口启动时,一切都很正常。
    tableview
    按预期显示内容。但是当我在input.xib上进行更改并再次按下操作按钮时,result.xib上的
    tableview
    不会更新。 我检查了
    resultArray
    内容(通过NSLog),它得到了所有新值,因此工作正常

    我的问题在哪里


    我读了很多
    [tableView reloadData]
    ,但我不知道如何实际设置代码和必要的绑定。

    与其将对象添加到数组中,不如将IBOutlet添加到数组控制器中,然后使用
    addObject:
    方法将对象添加到表视图中。

    您好MateurProgrammer,您的意思是我需要更改
    [resultArray addObject:newResult][Resultarray控制器添加对象:newResult]中的code>并在
    控制器中创建插座
    #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
    
    #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]; 
    
    }