2013-05-30 3 views
0

Итак, я получил эту настройку массива, называемую 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

Это не изменяемый массив, если вы хотите изменить что-либо в массиве необходим использовать Мутабельные Массивы – alpha

+0

В чем проблема с этим массивом?Пожалуйста, подождите более подробно –

+1

Держу пари, что вы показываете это в виде таблицы, да? Вы вызываете «reloadData» при нажатии кнопки «Ежемесячно»? –

ответ

0

Я установил мою проблему с помощью reloadData как предложено. Однако, reloadData должен был быть вызван в viewWillAppear, иначе он отказался обновлять мой tableView.

Код:

- (void)viewWillAppear:(BOOL)animated{ 
    [self.tableView reloadData]; 
} 
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]; 
} 

EDIT :

Хорошо для этой цели позвольте мне сказать, что есть 2 ViewControllers VC1, VC2 в VC1

вы обновляете значение и в VC2 таблице с массивом источника данных на med inputArray.

  • Таким образом, в VC1, когда кнопка нажата
  • Получить экземпляр VC2
  • присвоить массив VC2instance.inputArray = tableDataArray;
  • Вызов обновления в таблице с reloadData
+0

Plz скажет эффект на другом, вместо того, чтобы проверять 'NO' –

+0

К сожалению, отредактировал ответ :) –

+0

Спасибо за ответ! Тем не менее, я продолжаю получать «Нет известного метода класса для селектора reloadData». – Torylon

1

Geez ... так много ответов есть все это неправильно.

Просто позвоните [yourTableViewOutlet reloadData] из IBAction, где трогается месячная кнопка.

E.G.

- (IBAction)dateSpecifiedButtonTouch:(id)sender { 
    ... 
    ... 
    ... 
    ... 
    [yourTableViewOutlet reloadData]; 
} 

Конечно, вы хотите изменить «yourTableViewOutlet» к истинному имени вашей точки зрения таблицы, если он подключен к розетке.

+0

Я сказал то же самое :) –

+2

хорошо, а затем +1 к вашему очень тонкому ответу, @ LithuT.V –

+0

@MichaelDautermann Продолжайте получать такую ​​же досадную ошибку в reloadData ..: никакого известного метода класса для селектора 'reloadData'. Код: [DateSpecifiedViewController reloadData] ;. – Torylon

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]; 
    }} 
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 
} 
Смежные вопросы