Objective c UISwitch、if/else语句用于筛选TableView

Objective c UISwitch、if/else语句用于筛选TableView,objective-c,uitableview,uiview,uiswitch,Objective C,Uitableview,Uiview,Uiswitch,因此,我正在为我的应用程序创建一个设置视图(SettingsViewController),该视图包含5个开关。我希望实现以下目标: 如果开关打开,则过滤TableView以仅显示包含“关节炎”的项目。如果开关关闭,则显示所有项目。 注意:TableView位于另一个视图(ViewController)上 现在,尽管我已经将ViewController.h导入到我的setingsviewcontroller.m文件中,但它告诉我StrainTableView是未知的。你知道为什么吗?请参阅下面的

因此,我正在为我的应用程序创建一个设置视图(SettingsViewController),该视图包含5个开关。我希望实现以下目标:

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

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

现在,尽管我已经将ViewController.h导入到我的setingsviewcontroller.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
#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
设置viewcontroller.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];


    }
}
ViewController.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
#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
#导入“PickerViewController.h”
@界面ViewController:UIViewController
{
NSArray*搜索结果;
//NSArray*菌株;
NSMutableData*数据;
NSMutableArray*数据阵列;
NSArray*菌株;
}
@属性(非原子,强)NSMutableArray*favoritesArray;
@属性(非原子,保留)NSArray*搜索结果;
@属性(强,非原子)IBUITableView*StrainTableView;
@结束

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

[vc.StrainTableView setSearchResults: [arthritisResults copy]];
如何创建ViewController实例取决于应用程序的结构。您可能不只是想alloc init one,而是想获得对您已经拥有的一个的引用


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

好的,请原谅我的新手回答(lol),但是我如何创建viewcontroller类的实例(或者更确切地说,在SettingsViewController中创建对现有引用的引用)?创建viewController类实例的方法是导入标头,然后在.h文件中创建一个由视图控制器表示的变量类型,如Nameofyourviewcontroller*instanceoftheviewcontroller;@user784044,不,这不会创建视图控制器的实例,只会创建这是一个输入到视图控制器类的属性。@BrittanyL,正如我在回答中所说的,它取决于应用程序的结构。您如何在屏幕上设置ViewController和ViewController?哪一个先到?您使用的是故事板吗?导航控制器吗?您需要提供一些有关您正在执行的操作的详细信息。@R来自w据我所知,从我在应用程序中所做的工作来看,实例化视图控制器与创建视图控制器的实例变量是一样的。如果我在评论中不清楚,我很抱歉。我无意让它听起来像是我在说生成视图控制器的属性。