带有多个详细视图控制器的MGSplitViewController

时间:2012-01-08 18:24:43

标签: objective-c cocoa-touch uisplitviewcontroller

我已经实现了一个MGSplitViewController,其中我在masterviewcontroller中有6行,每一行都将一个新的UIViewController加载到detailviewcontroller中 - 我使用多个详细视图控制器跟踪了Apples示例项目。但是我遇到了一些奇怪的问题。

首先,在初始加载时,第一个选定的detailviewcontroller完美显示。但是,当我在masterviewcontroller中选择不同的行来更改详细视图控制器时,行被选中但是detailviewcontroller没有改变 - 这样就可以继续这样做几次点击 - 然后一切正常。

差不多,现在当新的detailviewcontroller实际加载时,有时会覆盖视图。例如,如果我首先选择带有tableview的detailviewcontroller,然后选择一个只有一些按钮的按钮 - 按钮会显示在tableview上。如果有人能理解我做错了什么,请告诉我。这是我的selectrow方法。

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    /*
     Create and configure a new detail view controller appropriate for the selection.
     */

    switch (indexPath.row) {
        case 1:
        {
            self.splitViewController.detailViewController = self.postViewController;
//            popover = [[UIPopoverController alloc] initWithContentViewController:self.postViewController];
//            [popover presentPopoverFromRect:CGRectMake(200, 0, 100, 100) 
//                                     inView:self.splitViewController.view 
//                   permittedArrowDirections:UIPopoverArrowDirectionAny 
//                                   animated:YES];
            break;
        }
        case 2:
            self.splitViewController.detailViewController = self.latestViewController;
            break;
        case 3:
            self.splitViewController.detailViewController = self.categoriesViewController;
            break;
        case 4:
            self.splitViewController.detailViewController = self.messagesViewController;
            break;
        case 5:
            self.splitViewController.detailViewController = self.searchViewController;
            break;
        case 6:
            self.splitViewController.detailViewController = self.accountViewController;
            break;
        default:
            break;
    }
}

1 个答案:

答案 0 :(得分:2)

在MGSplitViewController中似乎存在一个错误,它不会删除之前的detailViewController视图。要解决此问题,请在switch语句上方添加以下行:

[self.splitViewController.detailViewController.view removeFromSuperview]