0

我正在更新我的 iPad 应用程序,我在拆分视图控制器的表中有一个选项列表,但它没有触发 setDetalItem 没有触发。由于外形尺寸(屏幕太小),这不会移植到 iPhone 上。

从 appDelegate 类:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
    UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
    splitViewController.delegate = (id)navigationController.topViewController;

    UINavigationController *masterNavigationController = splitViewController.viewControllers[0];
    JSLMasterViewController *controller = (JSLMasterViewController *)masterNavigationController.topViewController;
    controller.managedObjectContext = self.managedObjectContext;
    return YES;   
}

从主视图控制器:

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    JSLDetailViewController *detailView = self.detailViewController;
    detailView.telegram = indexPath.row;

    NSLog(@"Did Fire 1");

}

从我的 detailViewController 中:

- (void)setDetailItem:(id)newDetailItem
{
    NSLog(@"Did Fire 2");

    if (_detailItem != newDetailItem) {
        _detailItem = newDetailItem;

    // Update the view.
        [self configureView];
    }

    if (self.masterPopoverController != nil) {
        [self.masterPopoverController dismissPopoverAnimated:YES];

    }

}

- (void)configureView
{
    // Update the user interface for the detail item.

    if (self.detailItem) {
        //self.detailDescriptionLabel.text = [[self.detailItem valueForKey:@"timeStamp"] description];

        NSArray *mainQuestion = [self mainQuestionArray];
        NSArray *subQuestion = [self subQuestionArray];
        questionTitle.text = mainQuestion[telegram];
        subQuestionOne.text = subQuestion[telegram][0];
        subQuestionTwo.text = subQuestion[telegram][1];
    }

}

我知道我可能需要在 appDelegate 中创建 detailViewController 的实例,但我不确定如何执行此操作。我发现的大多数教程都是从头开始构建拆分视图,或者似乎使用的是旧版本的机制。您能给我的任何提示将不胜感激!

4

2 回答 2

0

事实证明,在 iOS6 中,需要直接调用“setDetailItem”。你可以在这里传递对象,尽管它不一定是你想的那样。我将以下代码添加到 didSelectItemAtIndexPath:

[detailView setDetailItem:indexPath];

这触发了对 MasterViewController 的更新,生活很好。

于 2013-03-19T17:09:10.973 回答
0

您需要设置 detailView.detailItem 才能- (void)setDetailItem:(id)newDetailItem触发。

在 MasterViewController.m detailViewController 通常是这样的:

self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];

然后在 didSelectRowAtIndexPath 中:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        NSYourCoolObject *object = _YourObjectArray[indexPath.row];
        self.detailViewController.detailItem = object;
}
于 2013-03-19T16:32:10.353 回答