If语句不会检查NSArray

时间:2015-08-04 19:11:15

标签: ios objective-c if-statement

我正在尝试创建一个if语句来检查所选单元格是否等于数组中的对象,如果是,那么它将相应地设置NSURL。我引用的表来自另一个名为PopOverViewController的视图控制器,我创建了一个委托并在destinationViewController中使用。

ViewController.m:

-(void) didLoadSelectedLayer:(NSString *)selectedLayer{
self.popOverArray = [[NSArray alloc] initWithObjects:@"Electric Radio", @"Electric Truck", @"Gas Radio", @"Gas Truck", @"Meter", @"Sewer Radio", @"Sewer Truck", @"Support Radio", @"Support Truck", @"Water Radio", @"Water Truck", @"Select All", nil];

if ([_popoverTableVC.myTable.indexPathForSelectedRow isEqual:@"Electric Radio"]) {
    _url = [NSURL URLWithString:@"http://somewebsite.com"];
}else{

}

我最初有一个switch语句,但由于switch语句不能使用NSStrings,我对如何达到预期效果感到困惑。

这是我创建委托的PopOverViewController.h:

#import <UIKit/UIKit.h>
#import <ArcGIS/ArcGIS.h>

#pragma mark - popoverTableViewControllerDelegate

@protocol popOverTableViewControllerDelegate <NSObject>
@required
-(void) didLoadSelectedLayer:(NSString *)selectedLayer;


@end

@interface PopOverTableViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
{
AGSFeatureLayer *popOverLayer;

IBOutlet UITableView *myTable;


}
@property (nonatomic, strong)IBOutlet UITableView *myTable;
@property (nonatomic, strong) NSArray *popOverArray;
@property (nonatomic,strong) id<popOverTableViewControllerDelegate> delegate;
//-(void)didSelectObject:(UITableView *)tableView :(NSInteger *)key;
@end

这是PopOverViewController.m:

#import "PopOverTableViewController.h"
#import "ViewController.h"

#pragma mark - PopOverTableViewControler

@interface PopOverTableViewController ()
{
    NSURL *_url;
    ViewController *_ViewController;
}

@end

@implementation PopOverTableViewController
@synthesize delegate;

-(void)viewDidLoad
{
    [super viewDidLoad];
    self.popOverArray = [[NSArray alloc] initWithObjects:@"Electric Radio", @"Electric Truck", @"Gas Radio", @"Gas Truck", @"Meter", @"Sewer Radio", @"Sewer Truck", @"Support Radio", @"Support Truck", @"Water Radio", @"Water Truck", @"Select All", nil];
    [self.tableView reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    return [self.popOverArray count];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    return 1;
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
        NSString *selectedLayer = [_popOverArray objectAtIndex: indexPath.row];
        [self.delegate didLoadSelectedLayer:selectedLayer];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier =@"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.textLabel.text = [self.popOverArray objectAtIndex:indexPath.row];
    return cell;
}


@end

2 个答案:

答案 0 :(得分:1)

[_popoverTableVC.myTable.indexPathForSelectedRow isEqual:@"Electric Radio"]

这行代码将NSIndexPathNSString进行比较。它永远不会是真的。你必须获得该行的字符串才能使用。祝你好运

答案 1 :(得分:1)

您的条件是错误地检查了NSIndexPath所选行的NSString

if ([_popoverTableVC.myTable.indexPathForSelectedRow isEqual:@"Electric Radio"]) {

您应该将您的字符串与数组索引的内容进行比较,该索引对应于您选择的行:

if ([[self.popOverArray objectAtIndex:_popoverTableVC.myTable.indexPathForSelectedRow.row] isEqual:@"Electric Radio"]) {