如何访问UITableView子视图选择?

时间:2009-05-13 20:18:32

标签: iphone objective-c cocoa-touch uitableview

我创建了一个UIViewControllerAnestDrugCalcViewController),其中有一个按钮,可以打开UITableViewControllerDrugTableViewController)来选择药物。 DrugTableViewController基于NSMutableArray填充,并由多个NSDictionary个对象(drugName,drugDose,drugConcentration等)组成。

我可以通过将其推送到导航堆栈来打开DrugTableViewController,但我无法弄清楚如何从我的AnestDrugCalcViewController告诉所选项目的属性是什么。

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

@interface DrugTableViewController : UITableViewController {
NSMutableArray          *drugList;
NSIndexPath *lastIndexPath;
IBOutlet UITableView    *myTableView;
NSObject *selectedDrug;
}

@property (nonatomic, retain) NSArray *drugList;
@property (nonatomic, retain) UITableView *myTableView;
@property (nonatomic, retain) NSObject *selectedDrug;

@end

DrugTableViewController.m的顶部     #import“DrugTableViewController.h”

@implementation DrugTableViewController

@synthesize drugList,myTableView, selectedDrug; 

2 个答案:

答案 0 :(得分:3)

您可以在vwDrugTable中拥有一个属性,用于在用户选择时存储所选行。然后,在删除该表视图并返回vwCalc后,只需从该属性中获取数据。

这意味着在vwDrugTable中,有类似的东西:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    self.selectedDrug = [self.drugs objectAtIndex:indexPath.row];
}

然后,只在您需要时从selectedDrug访问vwCalc

答案 1 :(得分:3)

UITableView的{​​{1}}方法可让您确定选择了哪一行:

-indexPathForSelectedRow

要在选择更改时收到通知,请在表格视图委托中实施NSIndexPath *selectionPath = [vwDrugTable indexPathForSelectedRow]; if (index) { NSLog(@"Selected row:%u in section:%u", [selectionPath row], [selectionPath section]); } else { NSLog(@"No selection"); }

tableView:didSelectRowAtIndexPath: