我已經建立了一個分組的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];
}
}
代碼,請.. .. – Krishnabhadra
@Krishnabhadra - 代碼已添加。在iPad上正常工作男孩在iPhone上行爲怪異...... – CCDEV
任何人都可以提供幫助嗎? – CCDEV