我是使用故事板的Objective-C和iOS编程的新手。
场景1:包含表格视图。 (ViewController.m)
场景2:创建并添加对象。 (AddObjectViewController.m)
问题
- (void)viewDidLoad
( ViewController.m ,其中填充了表格)时,单例类中的数组确实为空。在ViewController中初始化单例类之前,需要更多时间来编写数据。
为此,我尝试在场景2( AddObjectViewController.m )中写入数组之后和在场景1中初始化单例类之前添加等待/休眠时间( ViewController.m )。 这是行不通的。好像一切都在睡觉。
怎么办?它应该已经按照我的逻辑工作了,从我的研究来看,单例类应该适合这种情况。
编辑:重要的代码。
ViewController2.m
- (IBAction)saveButtonPressed:(id)sender {
// Custom initialization.
Computer *object = [[Computer alloc] initWithName:nameField.text IP:ipField.text Port:portField.text Password:passwordField.text];
// Add Computer to array of Computers via "Singleton" (shared array).
Computers *sharedComputers = [Computers sharedComputers];
[sharedComputers addComputer:object];
}
ViewController.m
@implementation ViewController{
NSMutableArray *tableData;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *tableIdentifier = @"TableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableIdentifier];
}
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"Computer Filled-25.png"];
return cell;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Initialize table data
tableData = [[NSMutableArray alloc] init];
// Add objects to table
Computers *sharedComputers = [Computers sharedComputers];
for (Computer* item in [sharedComputers getArray]) {
[tableData addObject:item.name];
}
}
Computers.m(Singleton类)
- (void)addComputer:(Computer *)aComputer {
[computerArray addObject:aComputer];
}
答案 0 :(得分:0)
如果在viewDidLoad方法中填充场景1中的表视图的dataSource数组,则需要知道从场景2返回场景1后将不再调用viewDidLoad。解决方案是移动dataSource实现to SceneWillAppear方法在场景1
-(void)viewDidLoad{
[super viewDidLoad];
dataSource = [[NSMutableArray alloc]init];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[dataSource removeAllObjects];
dataSource = singletonClass.MutableArray; // fill dataSource from your singleton class
}
这将确保每次查看Scene1时刷新tableview数据