私はプログラミングの経験があまりないので、ここに私の質問があります:
コンバーターアプリを作成しようとしています。最後に、数字を入力できます。次に、2つのコンポーネントがありますUIPickerView
。最初のコンポーネントでは、入力形式 (例: °Celcius) を選択します。2 番目のコンポーネントでは、°Celcius を°Fahrenheit に変換するために、出力形式 (例: °Fahrenheit) を選択します。
しかし、もっと単位(重量、エネルギーなど)を追加したいです。に表示したいUITableView
。で特定のセルを選択すると、UITableView
そのUIPickerView
デリゲートを更新する必要があります。より正確には、単位の名前 (eV、ジュール、cal、エルグなど) を含む配列は、何らかの方法でdetailViewController
(私が持っているUIPickerView
) に実装する必要があります。
これが私のコードです:
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
<UITableViewDataSource,UITableViewDelegate,UIPickerViewDataSource,UIPickerViewDelegate>
@property (strong,nonatomic) IBOutlet UIPickerView *EinheitenPicker;
@property (weak,nonatomic) IBOutlet UITableView *EinheitenTableView;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
{
NSArray *EinheitenNameArray;
}
@end
@implementation ViewController
@synthesize EinheitenPicker,EinheitenTableView;
- (void)viewDidLoad
{
[super viewDidLoad];
EinheitenNameArray=[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"AlleEinheiten" ofType:@"plist"]];
[self.EinheitenTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
[self.EinheitenTableView.delegate tableView:self.EinheitenTableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark UItableView Delegate
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return EinheitenNameArray.count;
}
- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier=@"CellId";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell==nil) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text=[[EinheitenNameArray objectAtIndex:indexPath.row] objectForKey:@"Titel"];
return cell;
}
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//NSLog(@"Chosen:%@",self.EinheitenPicker);
[self.storyboard instantiateViewControllerWithIdentifier:@"TestId"];
[self.EinheitenPicker reloadAllComponents];
}
#pragma mark UIPickerView Methods
- (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
NSIndexPath *selectedIndexPath=[self.EinheitenTableView indexPathForSelectedRow];
NSArray *units=[[EinheitenNameArray objectAtIndex:selectedIndexPath.row] objectForKey:@"Einheiten"];
if (component == 0) {
return units.count;
}
return units.count;
}
- (NSString*) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSIndexPath *selectedIndexPath=[self.EinheitenTableView indexPathForSelectedRow];
NSArray *units=[[EinheitenNameArray objectAtIndex:selectedIndexPath.row] objectForKey:@"Einheiten"];
return [units objectAtIndex:row];
}
@end