Master Detail应用程序没有加载UIViewControllers



我正在使用XCode 4.5和ARC创建一个iPad版本的Master Detail Application。我有我的ipadmaster。h/。设置iPadDetailViewController.h/m(作为我的master)和iPadDetailViewController.h/m(作为我的detail)

当用户点击/选择iPadMaster上的行时,我试图从iPadDetailViewController加载不同的视图控制器。

在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];
}

当我点击主表中的第二行时,item_number应该是1,并加载'iPadLogin',但什么也没发生…如有任何建议,不胜感激。

正如我在评论中所说的,我认为你应该从主控制器更改细节控制器。在主控制器中,你决定去哪个细节控制器(通过在表中选择一行),所以它应该是主控制器的责任来做出改变。下面的代码应该做到这一点(注意,但是,如果你为你的控制器使用故事板,那么你应该使用[self])。storyboard instantiateViewControllerWithIdentifier:@"whatever"]获取你的下一个控制器,而不是alloc init)。

- (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;
        }
    }

最新更新