2011-08-23 36 views
0

我已經建立了一個分組的tableview和2個部分。在iPhone上不會出現iPhone桌面的奇怪行爲

在每個部分中總是必須有1個選擇,並且不能有更多。

在iPad上進行測試時,這是穩定的工作。

我最近開始爲iPhone版開發xib。

現在事情開始變得很奇怪。當滾動選擇會飛到整個地方,消失,有時在一個部分有4個選擇。

完全相同的代碼在iPad上完美無缺地工作。

是否有任何已知的錯誤可能會導致這種情況發生?

更新,代碼:

 - (void)viewDidLoad 
    { 


     [super viewDidLoad]; 
     self.view.backgroundColor = [UIColor whiteColor]; 

    //Initialize the array. 
    listOfItems = [[NSMutableArray alloc] init]; 

    NSArray *countriesToLiveInArray = [NSArray arrayWithObjects:@"Baskerville", @"Palatino", @"Times New Roman", @"Verdana", nil]; 

    NSDictionary *countriesToLiveInDict = [NSDictionary dictionaryWithObject:countriesToLiveInArray forKey:@"Countries"]; 

    NSArray *countriesLivedInArray = [NSArray arrayWithObjects:@"My Text", @"My Text", @"My Text", @"My Text", @"My Text", @"My Text", @"My Text", @"My Text", @"My Text", @"My Text", @"My Text", @"My Text", nil]; 

    NSDictionary *countriesLivedInDict = [NSDictionary dictionaryWithObject:countriesLivedInArray forKey:@"Countries"]; 

    [listOfItems addObject:countriesToLiveInDict]; 
    [listOfItems addObject:countriesLivedInDict]; 

    //Set the title 
    self.navigationItem.title = @"Countries"; 

} 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated];  

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

    //SET Font 
    NSString *neverOpendFonts1 = [prefs objectForKey:@"neverOpendFonts1"]; 

    if (![neverOpendFonts1 isEqualToString:@"1"]) { 


      lastIndexPath1 = [NSIndexPath indexPathForRow:1 inSection:0]; 

      UITableViewCell *newCell = [myTableView cellForRowAtIndexPath:lastIndexPath1]; 

      newCell.accessoryType = UITableViewCellAccessoryCheckmark; 

      NSString *lastIndexPathString1 = [NSString stringWithFormat:@"1"]; 

      [prefs setObject:lastIndexPathString1 forKey:@"lastIndexPath1"]; 

      NSString *fontName = [NSString stringWithFormat:@"Palatino"]; 

      [prefs setObject:fontName forKey:@"fontName"]; 

      neverOpendFonts1 = [NSString stringWithFormat:@"1"]; 

      [prefs setObject:neverOpendFonts1 forKey:@"neverOpendFonts1"]; 

      [prefs synchronize]; 


    } 

    else 
    { 
     NSInteger row = [[prefs objectForKey:@"lastIndexPath1"] intValue]; 

     lastIndexPath1 = [NSIndexPath indexPathForRow:row inSection:0]; 

     UITableViewCell *newCell = [myTableView cellForRowAtIndexPath:lastIndexPath1]; 

     newCell.accessoryType = UITableViewCellAccessoryCheckmark; 

    } 

//SET Font SIZE 

    NSString *neverOpendFonts2 = [prefs objectForKey:@"neverOpendFonts2"]; 

    if (![neverOpendFonts2 isEqualToString:@"1"]) { 


     lastIndexPath2 =[NSIndexPath indexPathForRow:2 inSection:1]; 

     UITableViewCell *newCell = [myTableView cellForRowAtIndexPath:lastIndexPath2]; 

     newCell.accessoryType = UITableViewCellAccessoryCheckmark; 

     NSString *lastIndexPathString2 = [NSString stringWithFormat:@"2"]; 

     [prefs setObject:lastIndexPathString2 forKey:@"lastIndexPath2"]; 

     NSString *fontSize = [NSString stringWithFormat:@"24.0"]; 

     [prefs setObject:fontSize forKey:@"fontSize"]; 

     neverOpendFonts2 = [NSString stringWithFormat:@"1"]; 

     [prefs setObject:neverOpendFonts2 forKey:@"neverOpendFonts2"]; 

     [prefs synchronize]; 

    } 

    else 
    { 

     NSInteger row2 = [[prefs objectForKey:@"lastIndexPath2"] intValue]; 

     lastIndexPath2 = [NSIndexPath indexPathForRow:row2 inSection:1]; 

     UITableViewCell *newCell2 = [myTableView cellForRowAtIndexPath:lastIndexPath2]; 

     newCell2.accessoryType = UITableViewCellAccessoryCheckmark; 


    } 

} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    //Number of rows it should expect should be based on the section 
    NSDictionary *dictionary = [listOfItems objectAtIndex:section]; 
    NSArray *array = [dictionary objectForKey:@"Countries"]; 
    return [array count]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

    return [listOfItems count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 


    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Set up the cell... 

    //First get the dictionary object 
    NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section]; 
    NSArray *array = [dictionary objectForKey:@"Countries"]; 
    NSString *cellValue = [array objectAtIndex:indexPath.row]; 
    cell.textLabel.text = cellValue; 

    if (indexPath.section == 0) 
    { 
     switch (indexPath.row) { 
      case 0: 
      { 
      cell.textLabel.font = [UIFont fontWithName:@"Baskerville" size:24]; 
      } 
       break; 
      case 1: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:24];  
      } 
       break; 
      case 2: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Times New Roman" size:24]; 
      } 
       break; 
      case 3: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Verdana" size:24]; 
      } 
       break; 
     } 

    } 
    if (indexPath.section == 1) { 

     switch (indexPath.row) { 
      case 0: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:16]; 
      } 
       break; 
      case 1: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:20];  
      } 
       break; 
      case 2: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:24]; 
      } 
       break; 
      case 3: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:28]; 
      } 
       break; 
      case 4: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:32]; 
      } 
       break; 
      case 5: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:36]; 
      } 
       break; 
      case 6: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:40]; 
      } 
       break; 
      case 7: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:44]; 
      } 
       break; 
      case 8: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:48]; 
      } 
       break; 
      case 9: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:52]; 
      } 
       break; 
      case 10: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:56]; 
      } 
       break; 
      case 11: 
      { 
       cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:60]; 
      } 
       break; 
     } 


    } 


    return cell; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // CGFloat result; 

    if (indexPath.section == 0) 
    { 
     return 50; 

    } 
    if (indexPath.section == 1) { 

     switch (indexPath.row) { 
      case 0: 
      { 
       return 50; 
      } 
       break; 
      case 1: 
      { 
       return 50;  
      } 
       break; 
      case 2: 
      { 
       return 50; 
      } 
       break; 
      case 3: 
      { 
       return 50; 
      } 
       break; 
      case 4: 
      { 
       return 50; 
      } 
       break; 
      case 5: 
      { 
       return 50; 
      } 
       break; 
      case 6: 
      { 
       return 50; 
      } 
       break; 
      case 7: 
      { 
       return 54; 
      } 
       break; 
      case 8: 
      { 
       return 58; 
      } 
       break; 
      case 9: 
      { 
       return 62; 
      } 
       break; 
      case 10: 
      { 
       return 66; 
      } 
       break; 
      case 11: 
      { 
       return 70; 
      } 
       break; 
     } 


    } 
    return 50; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 

    if (section == 0) { 
     return @"Font"; 
    } 
    if (section == 1) { 
     return @"Font Size"; 
    } 
    else if (!section == 0 || !section == 1) { 
     return @"Text"; 
    } 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

    UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath]; 

    NSInteger newRow = [indexPath row]; 

    if (indexPath.section == 0) { 

     NSString *fontName; 

     switch (indexPath.row) { 
      case 0: 
      { 
       fontName = [NSString stringWithFormat:@"Baskerville"]; 

      } 
       break; 
      case 1: 
      { 
       fontName = [NSString stringWithFormat:@"Palatino"];  

      } 
       break; 
      case 2: 
      { 
       fontName = [NSString stringWithFormat:@"Times New Roman"]; 

      } 
       break; 
      case 3: 
      { 
       fontName = [NSString stringWithFormat:@"Verdana"]; 


      } 
       break; 
     } 

     NSInteger oldRow = (lastIndexPath1 != nil) ? [lastIndexPath1 row] : -1; 

     if(newRow != oldRow) 
     { 
      newCell.accessoryType = UITableViewCellAccessoryCheckmark; 
      UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastIndexPath1]; 
      oldCell.accessoryType = UITableViewCellAccessoryNone; 
      lastIndexPath1 = indexPath; 
     } 


     NSInteger lastRow = lastIndexPath1.row; 

     NSString *lastIndexPathString = [NSString stringWithFormat:@"%i", lastRow]; 

     [prefs setObject:lastIndexPathString forKey:@"lastIndexPath1"]; 

     [prefs setObject:fontName forKey:@"fontName"]; 

     [prefs synchronize]; 

     [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    } 

    if (indexPath.section == 1) { 

     NSString *fontSize; 

     switch (indexPath.row) { 
      case 0: 
      { 
       // cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:16]; 

       fontSize = [NSString stringWithFormat:@"16.0"]; 

       // UITableViewCell *newCell =[tableView cellForRowAtIndexPath:indexPath]; 
       // newCell = [tableView cellForRowAtIndexPath:indexPath]; 
       // newCell.accessoryType = UITableViewCellAccessoryCheckmark; 

      } 
       break; 
      case 1: 
      { 
      fontSize = [NSString stringWithFormat:@"20.0"]; 


      } 
       break; 
      case 2: 
      { 
      fontSize = [NSString stringWithFormat:@"24.0"]; 


      } 
       break; 
      case 3: 
      { 
      fontSize = [NSString stringWithFormat:@"28.0"]; 


      } 
       break; 
      case 4: 
      { 
      fontSize = [NSString stringWithFormat:@"32.0"]; 


      } 
       break; 
      case 5: 
      { 
      fontSize = [NSString stringWithFormat:@"36.0"]; 


      } 
       break; 
      case 6: 
      { 
      fontSize = [NSString stringWithFormat:@"40.0"]; 


      } 
       break; 
      case 7: 
      { 
      fontSize = [NSString stringWithFormat:@"44.0"]; 


      } 
       break; 
      case 8: 
      { 
      fontSize = [NSString stringWithFormat:@"48.0"]; 


      } 
       break; 
      case 9: 
      { 
      fontSize = [NSString stringWithFormat:@"52.0"]; 


      } 
       break; 
      case 10: 
      { 
      fontSize = [NSString stringWithFormat:@"56.0"]; 


      } 
       break; 
      case 11: 
      { 
      fontSize = [NSString stringWithFormat:@"60.0"]; 

      } 
       break; 
     } 

     NSInteger oldRow = (lastIndexPath2 != nil) ? [lastIndexPath2 row] : -1; 

     if(newRow != oldRow) 
     { 
      newCell.accessoryType = UITableViewCellAccessoryCheckmark; 
      UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastIndexPath2]; 
      oldCell.accessoryType = UITableViewCellAccessoryNone; 
      lastIndexPath2 = indexPath; 
     } 


     NSInteger lastRow2 = lastIndexPath2.row; 

     NSString *lastIndexPathString2 = [NSString stringWithFormat:@"%i", lastRow2]; 

     [prefs setObject:lastIndexPathString2 forKey:@"lastIndexPath2"]; 

     //NSString *lastIndexPathString = [NSString stringWithFormat:@"@%", lastIndexPath2]; 

     //[prefs setObject:lastIndexPathString forKey:@"lastIndexPath2"]; 


     [prefs setObject:fontSize forKey:@"fontSize"]; 

     [prefs synchronize]; 

     [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    } 



} 
+0

代碼,請.. .. – Krishnabhadra

+0

@Krishnabhadra - 代碼已添加。在iPad上正常工作男孩在iPhone上行爲怪異...... – CCDEV

+0

任何人都可以提供幫助嗎? – CCDEV

回答

0

TSolved問題......上了車iphonedevsdk.com ...

我的回答我說

if([self.lastIndexPath1 isEqual:indexPath]) { cell.accessoryType = UITableViewCellAccessoryCheckmark; } else { cell.accessoryType = UITableViewCellAccessoryNone; }

到的cellForRowAtIndexPath

並添加了

if(self.lastIndexPath1) { UITableViewCell* uncheckCell = [tableView cellForRowAtIndexPath:self.lastIndexPath1]; uncheckCell.accessoryType = UITableViewCellAccessoryNone; } UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath]; cell.accessoryType = UITableViewCellAccessoryCheckmark; self.lastIndexPath1 = indexPath; }

到didSelectRowAtIndexPath方法...

我刪除舊的`/ *

NSInteger oldRow = (lastIndexPath1 != nil) ? [lastIndexPath1 row] : -1; 

    if(newRow != oldRow) 
    { 
     newCell.accessoryType = UITableViewCellAccessoryCheckmark; 
     UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastIndexPath1]; 
     oldCell.accessoryType = UITableViewCellAccessoryNone; 
     lastIndexPath1 = indexPath; 
    } 

      */` 

從didSelectRow,現在一切都完美的作品...

相關問題