所以我得到了一个名为tableDateArray的数组设置,它在 SubClass.h 中定义。现在我试图更改数据的数据,或者不选择按钮。
我在 MainView.m 中的代码:
- (IBAction)dateSpecifiedButtonTouch:(id)sender {
if (monthly.enabled == NO){
NSLog(@"no");
tableDateArray = [NSArray arrayWithObjects:
@"January 2012",
@"February 2012",
@"March 2012",
@"April 2012",
@"May 2012",
@"June 2012",
@"July 2012",
@"August 2012",
@"September 2012",
@"Octobre 2012",
@"November 2012",
@"December 2012",
@"All months",
nil];
}
if (monthly.enabled == YES){
NSLog(@"yes");
tableDateArray = [NSArray arrayWithObjects:
@"2002",
@"2003",
@"2004",
@"2005",
@"2006",
@"2007",
@"2008",
@"2009",
@"2010",
@"2011",
@"2012",
@"All years",
nil];
}}
因此,NSlog正在追踪正确的值,因此不是问题。但我的数组将填充先选择的任何状态,并拒绝更改数据。我肯定会忽略一些简单的事情。
根据请求添加:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell"; // unused method of type cell.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [tableDateArray objectAtIndex:indexPath.row];
return cell;
}
我不认为即时通讯reloaddata
说实话。
答案 0 :(得分:2)
从提供的代码到现在看起来还不错。没有理由可以说是为什么它不起作用
可能这是编写代码的更正确的方法
- (IBAction)dateSpecifiedButtonTouch:(id)sender {
if (monthly.enabled)
{
NSLog(@"yes");
tableDateArray = [NSArray arrayWithObjects:
@"2002",
@"2003",
@"2004",
@"2005",
@"2006",
@"2007",
@"2008",
@"2009",
@"2010",
@"2011",
@"2012",
@"All years",
nil];
}
else
{
NSLog(@"no");
tableDateArray = [NSArray arrayWithObjects:
@"January 2012",
@"February 2012",
@"March 2012",
@"April 2012",
@"May 2012",
@"June 2012",
@"July 2012",
@"August 2012",
@"September 2012",
@"Octobre 2012",
@"November 2012",
@"December 2012",
@"All months",
nil];
}
[table reloadData];
}
编辑:
对于那个目的,我说有2个ViewControllers VC1,VC2
在VC1中,您正在更新该值,在VC2中,该表包含名为inputArray的数据源数组。
答案 1 :(得分:1)
Geez ......这么多答案都错了。
只需从触摸每月按钮的IBAction中拨打[yourTableViewOutlet reloadData]
。
E.G。
- (IBAction)dateSpecifiedButtonTouch:(id)sender {
...
...
...
...
[yourTableViewOutlet reloadData];
}
当然,您需要将“yourTableViewOutlet
”更改为您已连接到插座的表格视图的真实名称。
答案 2 :(得分:0)
- (IBAction)dateSpecifiedButtonTouch:(id)sender {
if (monthly.enabled == NO){
NSLog(@"no");
tableDateArray = [[NSMutableArray alloc ]initWithObjects:
@"January 2012",
@"February 2012",
@"March 2012",
@"April 2012",
@"May 2012",
@"June 2012",
@"July 2012",
@"August 2012",
@"September 2012",
@"Octobre 2012",
@"November 2012",
@"December 2012",
@"All months",
nil];
}
if (monthly.enabled == YES){
NSLog(@"yes");
tableDateArray = [[NSMutableArray alloc ]initWithObjects:
@"2002",
@"2003",
@"2004",
@"2005",
@"2006",
@"2007",
@"2008",
@"2009",
@"2010",
@"2011",
@"2012",
@"All years",
nil];
}}
答案 3 :(得分:0)
- (IBAction)dateSpecifiedButtonTouch:(id)sender {
//maybe toggle monthly.enabled here?
[yourTableView reloadData];
}
static NSArray * tableDateArray = nil;
static NSArray * tableYearArray = nil;
+(void)initialize
{
if(self == [MyCLass class])
{
tableDateArray = [[NSMutableArray alloc ]initWithObjects:
@"January 2012",
@"February 2012",
@"March 2012",
@"April 2012",
@"May 2012",
@"June 2012",
@"July 2012",
@"August 2012",
@"September 2012",
@"Octobre 2012",
@"November 2012",
@"December 2012",
@"All months",
nil];
tableYearArray = [[NSMutableArray alloc ]initWithObjects:
@"2002",
@"2003",
@"2004",
@"2005",
@"2006",
@"2007",
@"2008",
@"2009",
@"2010",
@"2011",
@"2012",
@"All years",
nil];
}
}
//all of your tableview delegates/data sources:
{
NSArray * dataSource;
dataSource = monthly.enabled ? tableDateArray : tableYearArray;
//use datasource as the datasource
}
答案 4 :(得分:0)
我按照建议使用reloadData
解决了我的问题。但是,必须在viewWillAppear中调用reloadData
,否则它拒绝更新我的tableView。
代码:
- (void)viewWillAppear:(BOOL)animated{
[self.tableView reloadData];
}