0

所以我正在为我的应用程序创建一个设置视图 (SettingsViewController),该视图包含 5 个开关。我希望完成以下工作:

如果开关打开,过滤 TableView 以仅显示包含“关节炎”的项目。如果开关关闭,则显示所有项目。

注意:TableView 位于另一个视图(ViewController)上。

现在,即使我已将 ViewController.h 导入到我的 SettingsViewController.m 文件中,它也告诉我 StrainTableView 身份不明。知道为什么吗?请参阅下面的代码(您可以忽略 PickerView 引用)。

设置视图控制器.h

@interface SettingsViewController : UIViewController {


IBOutlet UISwitch *ArthritisSwitch;
IBOutlet UIView *CancerSwitch;
IBOutlet UISwitch *HIVSwitch;
IBOutlet UISwitch *InsomSwitch;
IBOutlet UISwitch *MigSwitch;
IBOutlet UILabel *mylabel;

       NSArray *arthritisResults;
     NSArray *Strains;
}


-(IBAction)switchtheswitch:(id)sender;

@property (nonatomic, retain) NSArray *arthritisResults;


@end

设置视图控制器.m

#import "SettingsViewController.h"
#import "ViewController.h"



@interface SettingsViewController ()

@end

@implementation SettingsViewController
@synthesize arthritisResults;


-(IBAction)switchtheswitch:(id)sender; {

    if (ArthritisSwitch.on) {


        NSPredicate *ailmentPredicate = [NSPredicate predicateWithFormat:@"title ==[c] 'Arthritis'"];

        arthritisResults = [Strains filteredArrayUsingPredicate:ailmentPredicate];


        // Pass any objects to the view controller here, like...

        [StrainTableView setSearchResults: [arthritisResults copy]];

        NSLog(@"%@", arthritisResults);
    }

    else {

          [Strains count];


    }
}

视图控制器.h

#import "PickerViewController.h"


@interface ViewController : UIViewController <PickerViewControllerDelegate, UITableViewDataSource,UITableViewDelegate>
{

    NSArray *searchResults;
    // NSArray *Strains;
    NSMutableData *data;
    NSMutableArray *dataArray;
    NSArray *Strains;


}


@property (nonatomic, strong) NSMutableArray * favoritesArray;
@property (nonatomic, retain) NSArray *searchResults;
@property (strong, nonatomic) IBOutlet UITableView *StrainTableView;


@end
4

1 回答 1

0

仅导入一个类不允许您使用该类的属性。您需要获取 ViewController 类的一个实例(例如,我们称它为 vc),然后像这样使用它:

[vc.StrainTableView setSearchResults: [arthritisResults copy]];

如何创建 ViewController 的实例取决于应用程序的结构。您可能不只是想分配 init 一个,而是要获得对您已经拥有的一个的引用。

顺便说一句,如果您遵守使用小写字母开始属性和方法(以及类的大写字母)的命名约定,您的代码将更容易阅读和理解。

于 2013-07-06T23:49:37.190 回答