将数据从一个UIViewController推送到另一个UIViewController

时间:2013-05-29 14:52:52

标签: iphone ios uitableview nsmutablearray

我正在将一个字符串从一个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

} 

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

1 个答案:

答案 0 :(得分: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:修复代码段。对不起,我编辑了这么多。只是想确保你得到正确的答案。