小编mar*_*ars的帖子

如何在导航栏的默认后退按钮上设置图像

我使用Appdelegate中的以下代码在导航栏上为所有视图控制器设置按钮图像:

    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

现在在我的一个视图控制器中,我从库中选择一个新图像并保存.我希望只要我保存这个新图像,后退按钮的"图像"就会被这个'newimage'取代.

我尝试在每个视图控制器的viewWillAppear中跟踪代码

    [self.navigationItem.backBarButtonItem setBackButtonBackgroundImage:newimage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

并尝试过

 [self.navigationItem.backBarButtonItem setImage:new];
Run Code Online (Sandbox Code Playgroud)

这个也是.但一切都是徒劳的.只有当我再次运行我的应用程序时才会更改图像,因此当Appdelegate中的代码被调用时.

Plz帮忙!

objective-c ios

5
推荐指数
2
解决办法
1万
查看次数

当应用程序处于后台或应用程序已被终止时,在应用程序图标上设置徽章并发送通知

在完成几乎所有教程后,我仍然无法正确设置我的徽章。情况是这样的 - 当我的应用程序在后台时,我希望我的徽章增加 1。所以我使用下面的代码行

NSLog(@"In didReceiveRemoteNotification badge number is %ld",(long)[UIApplication sharedApplication].applicationIconBadgeNumber);
[UIApplication sharedApplication].applicationIconBadgeNumber += [[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] integerValue];
NSLog(@"In didReceiveRemoteNotification badge number is %ld",(long)[UIApplication sharedApplication].applicationIconBadgeNumber);
Run Code Online (Sandbox Code Playgroud)

这两个 NSLog 分别给我值 1 和 2。即使在设置 applicationIconBadgeNumber 之前它怎么会得到 1 ?因此,在收到单个通知时,它会显示 2 作为徽章。

为了让我的问题更清楚,我发布了在 - didReceiveRemoteNotification 中完成的整个代码

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler{

if ((application.applicationState ==  UIApplicationStateBackground)) {

    NSLog(@"===========================");
    NSLog(@"App was in BACKGROUND...");

    NSLog(@"In didReceiveRemoteNotification badge number is %ld",(long)[UIApplication sharedApplication].applicationIconBadgeNumber);
    [UIApplication sharedApplication].applicationIconBadgeNumber += [[[userInfo objectForKey:@"aps"] objectForKey:@"badge"] integerValue];
    NSLog(@"In didReceiveRemoteNotification badge number is %ld",(long)[UIApplication sharedApplication].applicationIconBadgeNumber); …
Run Code Online (Sandbox Code Playgroud)

objective-c ios

5
推荐指数
1
解决办法
4715
查看次数

标签 统计

ios ×2

objective-c ×2