在另一个类中向TableView添加数据

时间:2013-11-17 13:38:52

标签: ios objective-c

我有一个TableView,它是HomeViewController 我还有另一个View是NewViewController

在HomeViewController中,我可以通过执行以下操作向plist添加项目,例如“Book Title”键:

NSString *bookTitle;

self.books addObject:bookTitle

然后单击一个按钮以推送到NewViewController,其中有一个文本字段。单击保存按钮时,我需要将textField的文本添加到plist中的表视图“Book text”键

但是我不能在这个类中做self.books所以如何从NewViewController添加到HomeViewController中的tableview那个

1 个答案:

答案 0 :(得分:1)

在NewViewController中定义一个委托方法,单击该按钮时调用该方法,将textField内容传递给HomeViewController。 HomeViewController实现委托方法,然后可以根据需要更新books集合。 E.g:

NewViewController.h

// Define the delegate method(s)
@protocol NewViewControllerDelegate <NSObject>

-(void)addedTitle:(NSString *)text;

@end

@interface NewViewController : UIViewController

// Declare the delegate property
@property (nonatomic, weak)id <NewViewControllerDelegate>delegate;

// other declarations...

@end

NewViewController.m

#import "NewViewController.h"

@interface NewViewController ()

@end

@implementation NewViewController

// other implementation code...

-(IBAction)buttonTapped:(id)sender{
    [self.delegate addedTitle:textField.text];
}

@end

HomeViewController.h

#import <UIKit/UIKit.h>
#import "NewViewController.h"

// Note <NewViewControllerDelegate> on next line
@interface HomeViewController : UIViewController <NewViewControllerDelegate>

// other declaration code...

@end

HomeViewController.m

#import "HomeViewController.h"

@interface HomeViewController ()

@end

@implementation HomeViewController

-(void)viewDidLoad{
    [super viewDidLoad];

    myNewViewController.delegate = self;
}

// other implementation code...

#pragma mark - NewViewController delegate methods
// Implements the delegate callback
-(void)addedTitle:(NSString *)title{
    [self.books addObject:title];
}

@end