1

到目前为止,我正在将一个字符串从一个 UIViewController 推送到另一个,但是我成功地做到了这一点,但是当我将推送的字符串添加到 NSMutableArray 和 NSLog 时,它总是返回我的数组计数 0 这是我的代码:我正在使用情节提要和我是否需要将第二个视图引用到加载的视图中?

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [_TableView setDelegate:self];
    //[_TableView setDataSource:self];
    _numberOfRows = [[NSMutableArray alloc]init];
}

-(void)pushName:(NSString*)contactName
{
    //NSLog(@"Pushed name is: %@ ", contactName);
    _contactName = contactName;
    NSLog(@"Pushed name is: %@ ", _contactName);//<-- Returns the pushed string fine

    [_numberOfRows addObject:contactName];
    //[self.TableView reloadData];
     NSLog(@"Number of names: %d ", [_numberOfRows count]);//<--Always returns a 0

} 

不太确定为什么这不起作用。如果需要更多代码来澄清这个问题,那么请询问。

4

1 回答 1

1

当您调用 pushName 时,您的数组似乎尚未实例化。

你能给我们提供你称之为的背景吗?

编辑:只是为了详细说明。您的问题不在于在两个控制器之间传递数据。您的问题似乎是您的 Array 没有响应 addObject 和 count 消息。

尝试在您的数组上使用延迟实例化,它应该可以工作。

编辑2:代码片段:尝试添加方法:

- (NSMutableArray *)numberOfRows:
{
  if( _numberOfRows == nil ) _numberOfRows = [[NSMutableArray alloc] init]
  return _numberOfRows
}

在你使用的地方_numberOfRows尝试使用self.numberOfRows,即

[self.numberOfRows addObject:contactName];
//[self.TableView reloadData];
NSLog(@"Number of names: %d ", [self.numberOfRows count]);//<--Should return 1 or more now.

编辑 3:哦,如果你这样做,你可以删除viewDidLoad. 但你知道的。

编辑 4:修复代码片段。对不起,我编辑了这么多。只是想确保你得到正确的答案。

于 2013-05-29T17:26:11.320 回答