私は作成中のアプリケーションを持っていますが、これが私が何時間もかけて考え出した問題です。私はタブベースのアプリを持っています。最初のタブには UILabel オブジェクトがあり、メソッドを持つ SecondViewController.m から NSString を表示する必要があります。
-(IBAction) save: (id) sender{
// This String holds data from the secondViewController's textfield to be passed to the
// UILabel whch is on the firsViewController.m
NSString *data = self.addDataTextfield.text;
}
シングルトンを含む多くの方法を使用しましたが、シングルトンは親から子にデータを渡すことを意図しており、この場合、子は親コントローラーにデータを送信できないことをどこかで読んだので、それらは機能しませんが、唯一の方法はプロトコルを使用することですしかし、私はこの方法を使用してちょっと迷っています。これが私のsecondViewController.hにあるものです
#import <UIKit/UIKit.h>
#import "singletonObj.h"
#import "AppDelegate.h"
// Using a Protocol to pass data Back to the parent view
@protocol passStringDelegate <NSObject>
-(void) enteredString: (NSString *)string;
@end
@interface SecondViewController : UIViewController <UITextFieldDelegate>
{
singletonObj *object; // This singleton isnt being used, Just there incase
}
@property (strong, nonatomic)IBOutlet UITextField*addDataTextField;
- (IBAction)Save:(id)sender;
@property (retain) id <passStringDelegate> delegate;
@end
私の質問は、@protocolを使用してこれを実行し、このsecondViewControllerからデータを渡す方法はありますか、または少なくともこのコード内でNSNotificationCenterを使用してデータを渡す方法を誰かに教えてもらえますか? AppDelegateクラスを使用してデータを渡すのは快適ではありません.Appleのやり方に反するか、私にとってはうまくいかないprepareforSegueのようです。
私は周りを探していましたが、ほとんどの場合、親から子に送信されているデータを見つけましたが、ChildViewController が NSString を ParentViewController に送信してそのデータを UILAbel に表示できるタブベースの例は見当たりません。