需要帮助将深度 Link 路由集成到 Xcode Project Obj-C 中的内容

Need Help to integrate Deep Link Routing to Content in Xcode Project Obj-C

当我尝试将 Branch 的深度 link 路由添加到我项目中的内容时,我遇到了两个问题。

  1. 需要从数组中找到itemid。 目前,我在我的 homepage.m 中显示来自 homePageArray 的项目列表,当用户单击项目显示时,它将根据所选索引将它们重定向到 ItemDetailPage。

    ItemDetailPage * itemDetailPageObj = [[ItemDetailPage alloc]initWithNibName:@"ItemDetailPage" bundle:nil];
    [itemDetailPageObj detailPageArray:homePageArray selectedIndex:tag];
    [self.navigationController pushViewController:itemDetailPageObj animated:YES];
    [itemDetailPageObj release];
    

但由于参数是 itemid,从深层 link。我需要在 homePageArray 中找到具有 itemid 的索引。但我不确定如何找到它。 (在 homePageArray 中,每个项目都有一个名称、id 和内容。)

  1. 我在 AppDelegate.m 中添加深度 link 启动序列时遇到问题。以下是 Branch 的 Deep Link

    的说明
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // initialize the session, setup a deep link handler
     [[Branch getInstance] initSessionWithLaunchOptions:launchOptions
                      andRegisterDeepLinkHandler:^(NSDictionary *params, NSError *error) {
    NSString *itemid = [params objectForKey:@"itemid"];
    int tag = "index of homePageArray based on the above itemid";
    if (itemid) {
       ItemDetailPage * itemDetailPageObj = [[ItemDetailPage alloc]initWithNibName:@"ItemDetailPage" bundle:nil];
       [itemDetailPageObj detailPageArray:homePageArray selectedIndex:tag];
       [self.navigationController pushViewController:itemDetailPageObj animated:YES];
       [itemDetailPageObj release];
       }
    }
    

问题是我无法在 AppDelegate.m 中启动 self.navigationController,所以我想知道上述问题的解决方法是什么。

谢谢。

对于你问题的第一部分,你可以使用

NSUInteger i = [ homePageArray indexOfObject: itemid ];

获取您要查找的项目的索引。

要回答将详细信息页面推送到导航视图控制器的第二个问题,您不应调用 self,因为在这种情况下它指的是 AppDelegate。您应该需要获得对主页 ViewController 的引用并调用类似

的内容
[homepageVC.navigationController pushViewController:itemDetailPageObj animated:YES];

有时在不同的线程中执行 UI 更改会导致奇怪的行为,因此我建议在主线程中执行此操作。将此代码放入您的回调中。

dispatch_async(dispatch_get_main_queue(),
                 ^{ 
    // Push view controller here
})