0

XCode 4.5 と ARC を使用して iPad バージョンのマスター ディテール アプリケーションを作成しています。iPadMaster.h/.m (マスターとして) と iPadDetailViewController.h/m (詳細として) をセットアップしました。

ユーザーがiPadMasterで行をクリック/選択すると、iPadDetailViewControllerからさまざまなView Controllerをロードしようとしています。

iPadDetailController.h で、次のように設定しました。

@property int itemNumber;

iPadMaster.h では、次のように呼び出しました。

@class iPadDetailViewController;

そしてこれを進めました:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DetailViewController * DVC = [[DetailViewController alloc]init];
    DVC.itemNumber = indexPath.row;
}

iPadDetailViewController で、私はこれを設定しました:

- (void)configureView
{
    switch (_itemNumber) {
        case 1:
        {
            iPadLogin *next = [[iPadLogin alloc] init];
            NSMutableArray *mut = [[NSMutableArray alloc]init];
            mut = [self.splitViewController.viewControllers mutableCopy];
            [mut replaceObjectAtIndex:1 withObject:next];
            self.splitViewController.viewControllers = mut;
            break;
        }

        default:{
            self.view.backgroundColor = [UIColor whiteColor];
        }
            break;
    }
}

//then i called it on:
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureView];

}

マスター テーブルの 2 番目の行をクリックすると、item_number は 1 で、「iPadLogin」をロードする必要がありますが、何も起こりません...ポインタは大歓迎です...

事前にサンクス...

4

1 に答える 1

1

コメントで言ったように、詳細コントローラーをマスターコントローラーから変更する必要があると思います。どの詳細コントローラーに移動するか (テーブル内の行を選択することによって) を決定しているのはマスターであるため、変更を行うのはマスター コントローラーの責任である必要があります。以下のコードはそれを行う必要があります (ただし、コントローラーにストーリーボードを使用している場合は、[self.storyboard instantiateViewControllerWithIdentifier:@"whatever"] を使用して、初期化を割り当てるのではなく、次のコントローラーを取得する必要があります)。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        switch (indexPath.row) {
            case 1:
            {
                iPadLogin *next = [[iPadLogin alloc] init];
                NSMutableArray *mut = [[NSMutableArray alloc]init];
                mut = [self.splitViewController.viewControllers mutableCopy];
                [mut replaceObjectAtIndex:1 withObject:next];
                self.splitViewController.viewControllers = mut;
                break;
            }
            case 2:
            {
                AnotherVC *another = [[AnotherVC alloc] init];
                NSMutableArray *mut = [[NSMutableArray alloc]init];
                mut = [self.splitViewController.viewControllers mutableCopy];
                [mut replaceObjectAtIndex:1 withObject:another];
                self.splitViewController.viewControllers = mut;
                break;
            }

            default:{
                UIViewController *detail = self.splitViewController.viewControllers[1];
                detail.view.backgroundColor = [UIColor whiteColor];
            }
                break;
        }
    }
于 2013-03-31T15:24:22.107 に答える