需要帮助将深度 Link 路由集成到 Xcode Project Obj-C 中的内容
Need Help to integrate Deep Link Routing to Content in Xcode Project Obj-C
当我尝试将 Branch 的深度 link 路由添加到我项目中的内容时,我遇到了两个问题。
需要从数组中找到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 和内容。)
我在 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
})
当我尝试将 Branch 的深度 link 路由添加到我项目中的内容时,我遇到了两个问题。
需要从数组中找到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 和内容。)
我在 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
})