objective-c - NSMutableArray 返回 NULL

标签 objective-c ios uitableview delegates nsmutablearray

我尝试从另一个类 (secondViewController) 添加对象到 NSMutableArray,然后将它添加到我的 FirstViewController 中的 UITableView,但是当我使用 NSLog 打印它时它返回 null。这是我的设置。

FirstViewController.h:

@interface FirstViewController : UIViewController <UITableViewDelegate,UITableViewDataSource>{
    IBOutlet UITableView *mytableview;
    NSMutableArray *mytableinfo;
}
@property (nonatomic,retain) IBOutlet UITableView *mytableview;
@property (retain) IBOutlet NSMutableArray *mytableinfo;

FirstViewController.m

#import "FirstViewController.h"
#import "SecondViewController.h"
@synthesize mytableinfo,mytableview;
-(IBAction)addShift:(id)sender{
SecondViewController *secondViewController = [[SecondViewController alloc]init];
[self presentModalViewController:secondViewController animated:YES];
}
- (void)viewDidLoad
{
    mytableinfo = [[NSMutableArray alloc]init];
    [super viewDidLoad];
}

SecondViewController.m

#import "SecondViewController.h"
#import "FirstViewController.h"

@implementation SecondViewController
@synthesize dateformatter,mydatepicker,startingTime;

-(IBAction)saveShift:(id)sender{
    FirstViewController *firstViewController = [[FirstViewController alloc]init];
    [firstViewController.mytableinfo addObject:@"Hello world"];
    NSLog(@"%@",firstViewController.mytableinfo);
    [self dismissModalViewControllerAnimated:YES];
}

我的目标是最终从 mytableinfo 提供一个 mytableview。我什至不确定这是否是最好的方法。任何建议将不胜感激。

最佳答案

在 SecondViewController 中,您正在使用 alloc init 创建 FirstViewController。那时,FirstViewController 上的 mytableinfo 为 nil,因为您直到 viewDidLoad 才进行分配。

什么加载了 SecondViewController?因为你模态地解雇了它。如果它是 FirstViewController,那么当您分配 init 第一个 View Controller 时,您不会调用以模态方式呈现它的实例。

让一个 View 像那样戳另一个 View 也不是很 MVC。它创建在 View 层耦合并在 View 层修改数据的代码。最好创建一个模型并让两个 View 修改该模型。

How to create a NSMutable Array which can access from different view controllers

View 之间通信的另一种方法是一个 View 将委托(delegate)(回调)传递给另一个 View 。这允许另一个 View 不耦合到另一个 View - 它只知道委托(delegate)的协议(protocol)。

What exactly does delegate do in xcode ios project?

关于objective-c - NSMutableArray 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004170/

相关文章:

swift - 删除单元格时的字典值 - 在展开可选值时意外发现 nil

ios - 在 iOS sdk 中下载图片的多任务处理

objective-c - Objective-c 中的 "instance variable"和 "property"之间有区别吗?

ios - XCode 5 vs XCode 6 动画变化?

iOS:警告 "attempt to present ViewController whose view is not in the window hierarchy"

ios - 如何使用 Box V2 iOS SDK 注销用户

swift - 尝试呈现 tableView

objective-c - iOS10 UITextView触摸事件崩溃

ios - 如何在本地网络中的两个设备中的两个 iOS 应用程序之间传递数据和通信?

ios - 尝试读取无主引用但对象已被释放 Swift 5