簡體   English   中英

設置視圖控制器不解雇

[英]settings view controller not dismissing

我正在創建一個具有2個簡單視圖控制器的任務列表應用程序...我在第一個( HomeScreen )中嵌入了一個導航控制器,但是,當我點擊我的自定義后退按鈕時,下一個視圖控制器( 設置 )不會消失。 我是否必須將Home View Controller設置為根VC? 然后使用popToRootVIewController方法? 我一直在使用dismissViewControllerAnimated ......

設置視圖控制器實現文件:

//
//  AGSettingsViewController.m
//  QuickList3
//
//  Created by Alex Gartenberg on 4/11/14.
//  Copyright (c) 2014 A.Gartenberg. All rights reserved.
//

#import "AGSettingsViewController.h"

@interface AGSettingsViewController ()
@property (weak, nonatomic) IBOutlet UILabel *backgroundTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *fontTitleLabel;
@property (weak, nonatomic) IBOutlet UILabel *settingsTitleLabel;

@property (nonatomic) BOOL fontColor;
@end

@implementation AGSettingsViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    //set title of view
    self.settingsTitleLabel.text = @"SETTINGS";

    // Determine background color
    if (!BACKGROUND)
    {
        self.settingsBackgroundImage.image = [UIImage imageNamed:@"blue.png"];
    }
    else
    {
        // Retrieve image wrapped in NSData
        NSData *imageData = [[NSUserDefaults standardUserDefaults] objectForKey:BACKGROUND];
        // Unwrap the image from NSData
        UIImage *savedBackground = [UIImage imageWithData:imageData];
        // Set image as new background
        self.settingsBackgroundImage.image = savedBackground;
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Back Button Method

- (IBAction)backButtonPressed:(UIButton *)sender
{
    [self didSaveSettings];
    NSLog(@"Back Button Pressed");
}

#pragma mark - NSUserDefaults Persistance

-(void)saveSettings
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    //Select current background
    UIImage *savedBackground = self.settingsBackgroundImage.image;

    //Wrap image in an NSData Object
    NSData *imageData = UIImageJPEGRepresentation(savedBackground, 100);
    //Save Data wrapped Image Object to NSUserDefaults
    [defaults setObject:imageData forKey:BACKGROUND];

    //Font Color Bool Saved
    [defaults setBool:self.fontColor forKey:FONT_COLOR];

    //Persist Data
    [defaults synchronize];
}

#pragma mark - AGSettingsViewController Save and Dismiss

-(void)didSaveSettings
{
    [self saveSettings];
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

是的,你不應該使用dismissViewControllerAnimated:completion:因為它只會影響父母以模態方式呈現的視圖控制器。 我同意該文件可以更明確地說明這一點,雖然這條線應該暗示這不起作用(強調我的):

最頂層的視圖使用其模態過渡樣式被忽略

因此,要從UINavigationController的堆棧中刪除頂視圖控制器,必須使用

-(void)didSaveSettings
{
    [self saveSettings];
    [self.navigationController popViewControllerAnimated:YES];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM