我有一个我正在制作的应用程序,但这是我花费数小时解决的问题。我有一个基于选项卡的应用程序,第一个选项卡有一个 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 类来传递数据很舒服,因为它似乎违背了苹果的方式或 prepareforSegue 这对我不起作用。
我一直在四处寻找,但我发现大多数数据是从父级发送到子级的,但我没有看到基于选项卡的示例,其中 ChildViewController 可以将 NSString 发送到 ParentViewController 以在 UILabel 上显示该数据。