2つのビューをポップするときにデータを後方に送る必要があります。iOS dev - UINavigationController:2番目の親ビューにデータを後方に送ります。
#import <UIKit/UIKit.h>
#import "ThirdViewController.h"
@class SecondViewController;
@interface RootViewController : UIViewController <PassInt>
@property (strong, nonatomic) SecondViewController *secondViewController;
@property (strong, nonatomic) ThirdViewController *thirdViewController;
@property (nonatomic) int intNumber;
@end
RootViewController.m
#import "RootViewController.h"
#import "SecondViewController.h"
@implementation RootViewController
@synthesize secondViewController = _secondViewController;
@synthesize thirdViewController = _thirdViewController;
@synthesize intNumber = _intNumber;
- (void)setIntNumber:(int)number{
_intNumber = number;
}
#pragma mark - View lifecycle
- (void)viewWillAppear:(BOOL)animated {
if(!_thirdViewController){
_thirdViewController = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:[NSBundle mainBundle]];
}
if(!_secondViewController){
_secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
self.secondViewController.thirdViewController = self.thirdViewController;
}
[self.navigationController pushViewController:self.secondViewController animated:YES];
}
@end
SecondViewController.hに
#import <UIKit/UIKit.h>
@class ThirdViewController;
@interface SecondViewController : UIViewController
@property (strong, nonatomic) ThirdViewController *thirdViewController;
@end
を
RootViewController.h:私は、プロトコルを使用してみましたので、これは私のコードの一部です。
SecondViewController.m
#import "SecondViewController.h"
#import "ThirdViewController.h"
@implementation SecondViewController
@synthesize thirdViewController = _thirdViewController;
...
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
[self.navigationController pushViewController:self.userPreferencesViewController animated:YES];
}
@end
ThirdViewController.h
#import <UIKit/UIKit.h>
@protocol PassInt <NSObject>
@required
- (void) setIntNumber:(int)number;
@end
@interface ThirdViewController : UIViewController{
id <PassInt> delegate;
}
@property (retain) id delegate;
- (IBAction)saveChanges;
@end
ThirdViewController.m
#import "ThirdViewController.h"
@implementation ThirdViewController
- (IBAction)saveChanges{
int someInt = 3;
[[self delegate] setIntNumber:someInt];
UINavigationController *tempNavigationController = self.navigationController;
[tempNavigationController popViewControllerAnimated:NO];
[tempNavigationController popViewControllerAnimated:NO];
}
...
@end
私は任意の助けをいただければ幸いです! UINavigationController referenceチェックで
あなたは達成しようとしていることをさらに説明できますか?私が考えることができる方法は少なくとも4つありますが、1つを選択することはあなたの目標に依存します。ありがとう。 –
ThirdViewControllerのsomeIntに応じて、私はrootViewControllerから別のsecondViewControllerを呼び出します。したがって、そのintをthirdViewControllerからrootViewControllerに渡す必要があります。この解決策は機能していない、私は理由を知らない。私は最初の親に後方に送るときだけ例を見つけました。 – iblagajic
ThirdViewControllerでは、setSymbolSizeの代わりにsetIntNumberです – iblagajic