2014-10-07 102 views
0

我正在将我的应用程序转换到iOS 8,并且我决定使用SplitViewController,因为它的新功能最终允许我做我想做的事。我在iPad上以模态形式呈现SVC,而SVC是全屏幕垂直转换的根视图控制器。从呈现视图控制器:iOS 8 UISplitViewController委托没有响应

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    plotSplitViewController = segue.destinationViewController; 

    plotViewController = (PlotViewController *)[[[segue.destinationViewController viewControllers] objectAtIndex:1] topViewController]; 
    plotViewController.inventory = _inventory; 

    if ([plotViewController view]) [plotViewController setPlot:selectedPlot]; 
} 

然后我手工制作的PlotSplitViewController连接:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.delegate = self; 

    // set up controllers 
    layoutNavigationController = [self.viewControllers objectAtIndex:1]; 
    plotViewController = (PlotViewController *)[layoutNavigationController topViewController]; 
    plotViewController.delegate = self; 

    // configure split view 
    [self showInfoPane:NO withTable:infoTableViewController]; 
    self.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
} 

所以主机和细节进去UINavigationControllers视图控制器(采取免费的工具栏大小调整的优势,再加上主表推视图层次结构)。

一切似乎都很好;视图加载,因为它们应该是,PlotViewController的委托方法正常工作,等等。但正如你所看到的,我将分割视图控制器分配给它自己的委托...但它不会响应它的任何自己的方法,所以我不能自定义它的行为。我检查并确认它已正确设置:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    NSLog(@"split view %@ did appear, delegate: %@", self, self.delegate); 
} 

并且它为两个值返回相同的对象(本身)。这只是一个禁忌?我读过,你可以指定一个SplitViewController作为它自己的委托,我认为一个对象可以是一个以上的其他对象的委托,对吧?它当然可以实现一个以上的协议。那么为什么我的SplitViewController无法为自己接收委托方法?我在他们所有的NSLogs,并没有任何人被称为。

回答

0

如果您将自定义视图控制器设置为UIViewController的子类,并以编程方式添加UISplitViewController作为子视图控制器,则会发挥作用。让你的VC成为它的代表,然后你可以让它表现出你想要的。

相关问题