大家好,我一直在构建应用程序并遇到了一些问题。 我的应用程序有两个viewControllers。一个是MenuViewController,另一个是MainViewController。
我想将一个字符串从MainViewController传递到MenuViewController中的mutableArray,但不知道如何。
以下是我的代码:
<MenuViewController.h>
#import <UIKit/UIKit.h>
@interface MenuViewController : UITableViewController {
NSMutableArray *secondFavourite;
}
@property (nonatomic, strong) NSMutableArray *secondFavourite;
@end
<MenuViewController.m>
#import "MenuViewController.h"
#import "MainViewController.h"
@interface MenuViewController ()
@property (strong, nonatomic) NSArray *menu;
@end
@implementation MenuViewController
@synthesize menu;
@synthesize secondFavourite;
- (void)viewDidLoad
{
[super viewDidLoad];
self.secondFavourite = [[NSMutableArray alloc] init];
self.menu = self.secondFavourite;
}
<MainViewController.h>
#import <UIKit/UIKit.h>
#import <social/Social.h>
@interface MainViewController : UIViewController {
IBOutlet UIImageView *imagepost;
UILabel *predictionLabel;
}
- (IBAction)sampleSelector:(UIButton *)sender;
- (IBAction)showAllClick:(id)sender;
@property (nonatomic, retain) IBOutlet UILabel *predictionLabel;
@property (strong, nonatomic) NSArray *predictionArray;
@property (strong, nonatomic) UIButton *menuBtn;
@property (strong, nonatomic) NSMutableArray *fav;
@property (strong, nonatomic) IBOutlet UILabel *favLabel;
@property (strong, nonatomic) IBOutlet UITableView* tableView;
@property (nonatomic, strong) NSMutableArray *favourite;
@end
<MainViewController.m>
- (void)viewDidLoad
{
[super viewDidLoad];
self.predictionArray = [[NSArray alloc] initWithObjects:@"Hey gurl", nil];
}
//Add to favourite
- (void) addToFav {
self.favourite = [[NSMutableArray alloc] init];
[self.favourite addObject:self.predictionLabel.text];
[self.tableView reloadData];
NSLog(@"%@", self.favourite);
}
//add to favourite button action
- (IBAction)addToFavButton:(id)sender {
[self addToFav];
//pass data from favourite here to secondFacourite in MenuViewController (found on stack overflow)
MenuViewController *menuViewController = [[MenuViewController alloc]initWithNibName:@"MenuViewController" bundle:nil];
menuViewController.secondFavourite = [[NSMutableArray alloc]initWithArray:self.favourite];
[self.navigationController pushViewController:menuViewController animated:YES];
}
我使用NSLog来检查MainViewController中的menuViewController.secondFavourite是否成功地将字符串添加到数组中,而不是MenuViewController中的数组是否是相同的数组?为什么没有menu.tableView更新并显示添加的新字符串?我很困惑,希望有人帮助我。
感谢您阅读本文。
答案 0 :(得分:3)
这与您的菜单viewDidLoad
正在覆盖这两行中的值这一事实有关:
self.secondFavourite = [[NSMutableArray alloc] init];
self.menu = self.secondFavourite;
第一行是将secondFavourite
属性设置为空的NSMutableArray
实例。并且由于viewDidLoad
仅在视图加载到内存后才会被调用(在这种情况下,当您尝试将视图控制器推入堆栈时),secondFavourite
属性中的初始值将是丢失。
相反,您应该将初始化代码移到init
方法中。