我正在创建一个简单的ToDo应用程序来学习Objective-C语言。初始视图是Tableview控制器,单元格显示不同的Todo's。在视图控制器中创建全局对象阵列
这是我在斯威夫特语言代码:
var toDos:[ToDo]=[
ToDo(taskTitle: "Feed the dog", taskDeadline: "11/23/2016", finishedState: .finished),
ToDo(taskTitle: "Eat Food", taskDeadline: "12/23/2016", finishedState: .notFinished),
ToDo(taskTitle: "Clean Up Room", taskDeadline: "10/13/2016", finishedState: .finished)
]
// MARK: ViewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
}
这里是我的目标c
- (void)viewDidLoad {
[super viewDidLoad];
_arrayOfTodos = [[NSMutableArray alloc]init];
[_arrayOfTodos addObject: [[Todo alloc]initWithInformation:@"Fly Back to SF" todoDeadline:@"8/6/17" todoStatus:inProgress]];
[_arrayOfTodos addObject: [[Todo alloc]initWithInformation:@"Wash Clothes" todoDeadline:@"4/11/17" todoStatus:inProgress]];
[_arrayOfTodos addObject: [[Todo alloc]initWithInformation:@"Read Books" todoDeadline:@"5/11/17" todoStatus:unfinished]];
[_arrayOfTodos addObject: [[Todo alloc]initWithInformation:@"Cook Pasta" todoDeadline:@"3/9/17" todoStatus:finished]];
[_arrayOfTodos addObject: [[Todo alloc]initWithInformation:@"Feed Dog" todoDeadline:@"1/1/17" todoStatus:finished]];
}
注意如何在迅速版本,该阵列是viewDidLoad
上面创建的代码。 这使我可以在整个视图控制器中使用该数组。
注意在Objective-C版本中,数组已创建并填充到viewDidLoad
中。这是一个问题,因为当我添加一个新的Todo
对象,然后调用[self.tableView reloadData];
更新视图时,它会调用viewDidLoad
方法并重新插入数组。因此,它就像我从来没有添加新的ToDo
对象(因为该阵列重新初始化并重新填充Todo对象初始值设定项(请参阅我如何添加到下面的数组)。以下行添加到该_arrayOfTodos
。
[_arrayOfTodos addObject: [[Todo alloc]initWithInformation:@"Fly Back to SF" todoDeadline:@"8/6/17" todoStatus:inProgress]];
我想知道如何创建ToDo
对象上方查看阵列并加载(或别的地方,我可以在全球范围内的控制器使用它)。
这是我的MainVC.h
#import <UIKit/UIKit.h>
#import "Todo.h"
@class Todo;
@interface MainVC : UITableViewController
-(void)addNewTodo:(Todo *)todo;
@property (strong, nonatomic) NSMutableArray *arrayOfTodos;
@end
''[self.tableView reloadData]'不调用'viewDidLoad'。 'viewDidLoad'只被调用一次,所以不应该是一个问题 –
为什么它会通过它的方法并创建另一个数组呢? @Vishnugondlekar –
使用Singleton会更好。看到这里:https://xcodenoobies.blogspot.my/2012/08/how-to-pass-data-between.html – GeneCode