我创建了一个UIViewController
(AnestDrugCalcViewController
),其中有一个按钮,可以打开UITableViewController
(DrugTableViewController
)来选择药物。 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;
答案 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: