Objective c UISwitch、if/else语句用于筛选TableView
因此,我正在为我的应用程序创建一个设置视图(SettingsViewController),该视图包含5个开关。我希望实现以下目标: 如果开关打开,则过滤TableView以仅显示包含“关节炎”的项目。如果开关关闭,则显示所有项目。 注意:TableView位于另一个视图(ViewController)上 现在,尽管我已经将ViewController.h导入到我的setingsviewcontroller.m文件中,但它告诉我StrainTableView是未知的。你知道为什么吗?请参阅下面的代码(您可以忽略PickerView引用) 设置查看控制器.hObjective 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是未知的。你知道为什么吗?请参阅下面的
@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据我所知,从我在应用程序中所做的工作来看,实例化视图控制器与创建视图控制器的实例变量是一样的。如果我在评论中不清楚,我很抱歉。我无意让它听起来像是我在说生成视图控制器的属性。