UISwitch,if / else语句来过滤TableView

时间:2013-07-06 21:59:43

标签: objective-c uitableview uiview uiswitch

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

如果启用此开关,则将TableView过滤为仅显示包含“关节炎”的项目。如果开关关闭,则显示所有项目。

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

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

SettingsViewController.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

SettingsViewController.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

#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

1 个答案:

答案 0 :(得分:0)

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

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

如何制作ViewController实例取决于应用的结构。你可能不只是想分配init一个,而是引用你已经拥有的一个。

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