0

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

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

これを iPadMaster.m の次の場所に設定しました。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    iPadDetailViewController * DVC = [[iPadDetailViewController alloc]initWithNibName:nil bundle:nil];
    DVC.itemNumber = indexPath.row;
}

iPadDetailViewController.m on でこの愚かなスタントを試しました[viewDidLoad]:

switch(_itemNumber)
    {

        case 0:
        {
            //Detail row
            vc1 *viewController = [[vc1 alloc] init];
            [self presentViewController:viewController animated:YES completion:nil];
            break;
        }
        case 1:
        {
            //Report row
            vc2 *viewController = [[vc2 alloc] init];
            //viewController.somePassedInData = theDataToPass;
            [self presentViewController:viewController animated:YES completion:nil];
            break;
        }
        case 2:
        {
            //Report row
            vc3 *viewController = [[vc3 alloc] init];
            //viewController.somePassedInData = theDataToPass;
            [self presentViewController:viewController animated:YES completion:nil];
            break;
        }

        ...
        case 9:
        {
            //Report row
            vc9 *viewController = [[vc9 alloc] init];
            //viewController.somePassedInData = theDataToPass;
            [self presentViewController:viewController animated:YES completion:nil];
            break;
        }
        default:
        {
            break;
        }

iPhoneでは「スイッチケース」を貼り付けるだけ- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPathですが、iPad環境では迷っています...

事前にサンクス...

4

1 に答える 1

1

分割ビュー コントローラーには、viewControllers プロパティがあります。インデックス 1 のオブジェクトは詳細コントローラです。viewControllers の変更可能なコピーを作成し、インデックス 1 のオブジェクトを新しいコントローラーに置き換え、その配列を分割ビューの arrayControllers に設定するだけです。

NextController *next = [[NextController alloc] init..... // or however you get your new controller
NSMutableArray *mut = [self.splitViewController.viewControllers mutableCopy];
[mut replaceObjectAtIndex:1 withObject:next];
self.splitViewController.viewControllers = mut;
于 2013-03-30T00:52:20.600 に答える