我正在創建一個簡單的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