Chr*_*ins 1 xcode objective-c storyboard uiviewcontroller push-notification
我一直在努力解决这个问题.当应用程序关闭时,我会收到2个自定义项,类型和ID的通知.该类型应该告诉我要加载哪个视图,id应该告诉应用程序从数据库中获取哪一行.我正在努力解决这个问题.
我需要点击通知,让它带我到相关记录.到目前为止,我已经几乎成功地使用了两种不同的方法,我将在下面概述.
我还应该指出,我知道有效负载从APNS正常运行,因为我已将其调试为死:)
我尝试的第一件事如下:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSString *itemType = [[userInfo objectForKey:@"T"] description];
NSString *itemId = [[userInfo objectForKey:@"ID"] description];
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// type 1 = call, type 2 = contact
if ([itemType isEqual: @"1"]) {
Leads_CallsDetailViewController *callView = [[Leads_CallsDetailViewController alloc] init];
[callView displayItem:itemId];
[self.window addSubview:callView.view];
[self.window makeKeyAndVisible];
} else if([itemType isEqual: @"2"]) {
Leads_ContactsDetailViewController *contactView = [[Leads_ContactsDetailViewController alloc] init];
[contactView displayItem:itemId];
[self.window addSubview:contactView.view];
[self.window makeKeyAndVisible];
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我在详细视图上有一个名为displayItem的方法,我将用它来从api获取数据然后显示它.这样做了,但看起来好像从未真正加载过.我在页面上有一个scrollview和各种按钮,但是从addSubview加载的所有按钮都是背景图像.完全加载视图没有任何事情真的发生过.我不知道如何处理.
我尝试的第二件事是直接进入这样的视图:
NSString *storyboardId = @"Leads_Calls_SB";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:storyboardId];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = initViewController;
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
这个似乎加载了视图功能和漂亮的外观与两个主要的警告.1.我不确定如何将数据传递给它,并且2.当我试图回弹时它不喜欢它,当我试图从那里推动推动时它也生气了,几乎就像没有导航一样即使整个应用程序嵌入在导航控制器中,视图的控制器也是如此.
非常感谢你的帮助.如果有人能帮我解决这个问题,我将感激你.
通常对于这个要求我会这样做..
使用NSNotificationCenter并发布didReceiveRemoteNotification的通知.
[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationReceived" object:self userInfo:userInfo];
Run Code Online (Sandbox Code Playgroud)从VC订阅它,您可以从中打开详细信息视图以显示消息.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationReceived:) name:@"notificationReceived" object:nil];
Run Code Online (Sandbox Code Playgroud)如果您自己实例化VC而不使用segue.你可以这样做..
UIStoryboard* storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
detailVC = [storyBoard instantiateViewControllerWithIdentifier:@"detailVC"];
detailVC.delegate = self;
detailVC.userInfo = @"YOUR DATA";
[self presentViewController:detailVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)要返回,您可以在您的详细VC中执行此操作.
[self dismissViewControllerAnimated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |