我正在尝试创建一个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
答案 0 :(得分:1)
[_popoverTableVC.myTable.indexPathForSelectedRow isEqual:@"Electric Radio"]
这行代码将NSIndexPath
与NSString
进行比较。它永远不会是真的。你必须获得该行的字符串才能使用。祝你好运
答案 1 :(得分:1)
您的条件是错误地检查了NSIndexPath
所选行的NSString
:
if ([_popoverTableVC.myTable.indexPathForSelectedRow isEqual:@"Electric Radio"]) {
您应该将您的字符串与数组索引的内容进行比较,该索引对应于您选择的行:
if ([[self.popOverArray objectAtIndex:_popoverTableVC.myTable.indexPathForSelectedRow.row] isEqual:@"Electric Radio"]) {