我正在将一个字符串从一个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
}
不确定为什么这不起作用。如果需要更多代码来澄清这个问题,那么请问。
答案 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:修复代码段。对不起,我编辑了这么多。只是想确保你得到正确的答案。