1

これは非常に幅広い質問であり、単一の問題に関する特定の質問ではありません。これらのいずれかを支援したくない場合は、ここに警告があります!

が付いたビューがありpickerWheelます。このピッカーには、貨物船主のリストが必要です。OKボタンを押すと、UITableViewこの所有者が所有しているボートが配置されます。それほど多くはなく、約5隻です。tableViewピッカーと同じビューにし たいと思います。

リスト内の船を押すと、別のビューに移動して、キャリッジの負荷など、別のビューから変数番号を追加できるようにします。

ピッカーからデータを作成してデータを入力および抽出する方法を知っていますが、このデータを使用してテーブルにデータを入力する方法がわかりません。また、テーブル上のオブジェクトを使用してビューにリンクする方法もわかりません。送信者に応じて異なる値を設定できます。

私はプログラミングが苦手なので、コードを使った完全なソリューションは素晴らしいでしょう!:)

編集:私がこれまでに持っているコード

.h file
#import <UIKit/UIKit.h>
#import "StartupViewController.h"

@interface CargoViewController : UIViewController

@property(strong,nonatomic) IBOutlet UILabel *testLabel; //label I use to test stuff instead of LOG
@property(strong,nonatomic) IBOutlet UIButton *findOwner; //button to summon pickerWheel
@property(strong,nonatomic) IBOutlet UIButton *findShip; //Button to confirm selection in picker and unhide tableView
@property(strong,nonatomic) NSArray *boatOwners; //Array for boat owners.
@property(strong,nonatomic) NSMutableArray *boatsForOwner; //My idea was that when you select a owner, i have a if-else series, so say i select "Bob", I code to add his boats to the array. Does this work? IDK
@property(strong,nonatomic) IBOutlet UITableView *boatsTableView; //Table view
-(IBAction)findOwnerButtonPressed:(id)sender;
-(IBAction)findShipButtonPressed:(id)sender;
@property(strong, nonatomic) IBOutlet UIPickerView *shipOwners; //ship owner picker wheel

@end

.mファイル:

 #import "CargoViewController.h"

@interface CargoViewController ()


@end

@implementation CargoViewController
@synthesize testLabel, findOwner, findShip,shipOwners, boatsTableView;
@synthesize boatsForOwner, boatOwners;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
[self getDataFromDensity ];

boatOwners = @[@"owner1", @"owner2", @"owner3"]; 

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void) getDataFromDensity
{
NSString *getData = [[NSUserDefaults standardUserDefaults]
                     objectForKey:@"globalMathString"]; //Gets a number from another view, wanted to use in the information about boat view later on. 
testLabel.text = getData;
[boatsForOwner setValue:@"5" forKey:getData];
}
-(IBAction)findOwnerButtonPressed:(id)sender
{
findShip.hidden = NO;
shipOwners.hidden = NO;

boatsTableView.hidden = YES;
}
-(IBAction)findShipButtonPressed:(id)sender
{
shipOwners.hidden = YES;
findShip.hidden = YES;
boatsTableView.hidden = NO;

}
#pragma mark -
#pragma mark PickerView DataSource

- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return [boatOwners count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView
         titleForRow:(NSInteger)row
        forComponent:(NSInteger)component
{
return [boatOwners objectAtIndex:row];
}


#pragma mark -
#pragma mark PickerView Delegate
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
  inComponent:(NSInteger)component
{
NSString *boatsFromOwner = [boatOwners objectAtIndex:[shipOwners selectedRowInComponent:0]];



}
4

2 に答える 2

1

疑似思考では、このようなものが必要になると思います。

cargoshipOwner.h // Class that holds all details for a cargoship owner.

クラスにはおそらくプロパティがあります

NSMutableArray *listOfCurrentlyOwnedShips;

でいっぱいです:

cargoShip.h // CargoShip class.

NSInteger carriageLoad;
UIColor *shipColor;
NSString *model;
NSString *name;

ピッカービューに塗りつぶしを入力したいようです。NSMutableArray選択cargoshipOwnersしたときに、オブジェクトのプロパティを渡してlistOfCurrentlyOwnedShipsUITableView

あなたがそれを実行しているとき、あなたは簡単にオブジェクトでにプッシュしてdetailViewそれcargoshipを操作することができます。

とその関数を適切に設定したら、ファイルUITableViewDelegateに次の関数が含まれているはずです。.m

この関数を使用してセルを描画する必要があります。cellForRowAtIndexPath:例は次のようになります。

-(UItableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexpath
{

    // Create a cell with 300 width and 80 height.
    UITableViewCell *cell = [[UITableViewCell alloc] initWithFrame:CGRectmake(0,0,300,80)]; 

    // Create a label.
    UILabel *lblCargoShipOwner = [[UILabel alloc] initWithFrame:CGRectMake(10,12,200,20)];
    lblCargoShipOwner.tag = 1;
    lblCargoShipOwner.textColor = [UIColor blackColor];
    lblCargoShipOwner.backGroundColor = [UIColor clearColor];    


    // Add it to your cell.
    [cell.contentView addSubView:lblCargoShipOwner];


    // Get the label.
    UILabel *textLabel = (UILabel *)[cell viewWithtag:1];

    // Add the owner's name to the label.
    textLabel.text = [[listOfCargoShipOwners objectAtIndex:indexPath.row]sName];

    // important to note is that listOfCargoShipOwners is your datasource.
}

値を入力したらUITableView、セルをタップして、tableView:didSelectRowAtIndexPath:例の中で何が起こるかを指定できます。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexpath *)indexPath
{

    // Push the owner's list of ships to a UITableViewController

    DetailViewController *dvc = [[DetailViewController alloc] initWithStyle:UITableViewStylePlain andCargoShipList: [[listOfCargoShipOwners objectAtindex:indexPath.row]listOfCurrentlyOwnedShips]];



}

免責事項:これはIDEを使用せずに記述されているため、コンパイルされる場合とされない場合があります。これも単なる例であり、コード自体が特定の問題に最適化されている場合とされていない場合があります。

于 2013-01-09T15:07:01.197 に答える
1

2つのヒント:

1. UITableViewDelegateプロトコルを実装する場合、ユーザーがテーブルビューで行を選択すると通知されます。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

したがって、ビューの内容を適宜変更してから、そのビューをUINavigationControllerにプッシュすることができます。

2. UITableViewDataSourceプロトコルをチェックして、コンテンツをテーブルビュー内に配置する方法を確認します。

于 2013-01-09T15:16:08.333 に答える