2010-02-01 5 views
1

이것은 기본적으로 슬롯 머신 유형과 비슷하지만 아주 기본적인 것이지만 문제는 인스턴트 메시지 버튼을 클릭하면 구성 요소의 동작이 애니메이션으로 표시되지 않는다는 것입니다. 내가 뭘 잘못하고 있는지 전혀 모르겠다. 어떤 도움을 주시면 감사하겠습니다.내 UIPickerView가 왜 애니메이션처럼 보이지 않습니까?

PS 여기에 전체 프로젝트 다운로드 : 당신이 바로 애니메이션 행을 선택한 후 [picker reloadComponent:i]을하기 때문에 그것은 아마 애니메이션 아니에요 http://files.me.com/knyck2/dcca9y

// 
     // CustomPickerViewController.m 
    // Pickers 
    // 
    // Created by Nicholas Iannone on 1/29/10. 
    // Copyright 2010 Apple Inc. All rights reserved. 
    // 

    #import "CustomPickerViewController.h" 


    @implementation CustomPickerViewController 

    @synthesize column1, column2, column3, column4, column5, picker, winLabel; 

    -(IBAction) spin : (id) sender { 

NSLog(@"even got here"); 

BOOL win = NO; 

int numInRow = 1; 

int lastVal = -1; 

for (int i = 0; 1 < 5; i++) { 
int newValue = random() % [self.column1 count]; 

if (newValue == lastVal) { 
    NSLog(@"even got here"); 

numInRow++; 
} 
else 
    numInRow = 1; 

    lastVal = newValue; 
[picker selectRow:newValue inComponent:i animated:YES]; 
[picker reloadComponent:i]; 
if (numInRow >= 3) 
    win = YES; 

NSLog(@"even got here"); 

} 

if (win) 
winLabel.text = @"winner!"; 

      else { 
winLabel.text = @""; 
      NSLog(@"even got here"); 
      } 

    } 

    /* 
    // The designated initializer. Override if you create the controller  programmatically    and want to perform customization that is not appropriate  for viewDidLoad. 
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
// Custom initialization 
} 
return self; 
    } 
    */ 


    // Implement viewDidLoad to do additional setup after loading the view, typically from   a nib. 
    - (void)viewDidLoad { 
UIImage *seven = [UIImage imageNamed:@"seven.png"]; 
UIImage *bar = [UIImage imageNamed:@"bar.png"]; 
UIImage *crown = [UIImage imageNamed:@"crown.png"]; 
UIImage *cherry = [UIImage imageNamed:@"cherry.png"]; 
UIImage *lemon = [UIImage imageNamed:@"lemon.png"]; 
UIImage *apple = [UIImage imageNamed:@"apple.png"]; 

for (int i = 1; i <= 5 ; i++) { 
    UIImageView *sevenView = [[UIImageView alloc] initWithImage: seven]; 
    UIImageView *barView = [[UIImageView alloc] initWithImage: bar]; 
    UIImageView *crownView = [[UIImageView alloc] initWithImage: crown]; 
    UIImageView *cherryView = [[UIImageView alloc] initWithImage:  cherry]; 
    UIImageView *lemonView = [[UIImageView alloc] initWithImage: lemon]; 
    UIImageView *appleView = [[UIImageView alloc] initWithImage: apple]; 


    NSArray *imageViewArray = [[NSArray alloc] initWithObjects:  sevenView, barView, crownView, cherryView, lemonView, appleView, nil]; 
    NSString *fieldName =[[NSString alloc] initWithFormat:@"column%d",  i]; 
    [self setValue:imageViewArray forKey:fieldName]; 
    [fieldName release]; 
    [imageViewArray release]; 

    [sevenView release]; 
    [crownView release]; 
    [barView release]; 
    [cherryView release]; 
    [lemonView release]; 
    [appleView release]; 

    } 

srandom(time(NULL)); 
[super viewDidLoad]; 
    } 



    /* 
    // Override to allow orientations other than the default portrait orientation. 
    -  (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
// Return YES for supported orientations 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    } 
    */ 

    - (void)didReceiveMemoryWarning { 
// Releases the view if it doesn't have a superview. 
[super didReceiveMemoryWarning]; 

// Release any cached data, images, etc that aren't in use. 
    } 

    - (void)viewDidUnload { 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
// e.g. self.myOutlet = nil; 
    } 


    - (void)dealloc { 
[picker release]; 
[winLabel release]; 
[column1 release]; 
[column2 release]; 
[column3 release]; 
[column4 release]; 
[column5 release]; 


[super dealloc]; 
    } 


    #pragma mark - 
    #pragma mark Picker Data Source Methods 

    -(NSInteger) numberOfComponentsInPickerView: (UIPickerView *) pickerView { 

return 5; 
    } 


    -(NSInteger) pickerView: (UIPickerView *) pickerView numberOfRowsInComponent:   (NSInteger) component { 

return [self.column1 count]; 

    } 

    #pragma mark Picker Delegate Methods 

    -(UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent: (NSInteger) component reusingView : (UIView *)view { 

NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d", component + 1]; 
NSArray *array = [self valueForKey:arrayName]; 
NSLog(@"got here yo"); 
return [array objectAtIndex: row]; 
NSLog(@"holyshit"); 


    } 

    @end 
+0

죄송합니다. 프로젝트의 첫 번째 링크가 작동하지 않는 이전 버전 이었으므로 새로운 링크가 있습니다. – nickthedude

답변

1

나는이 프로젝트가 나열된 책과 내 코드를 비교했으며, 3.1.2 SDK 및 iPhone 시뮬레이션으로 빌드하면 내 코드가 예상대로 작동한다는 것을 알았다 (애니메이션 포함). 새로운 xcode의 무언가가 애니메이션을 스킵하고 있습니다. 적어도 그것이 나타나는 방식입니다.

+0

나는 동일한 문제가있다. iOS4 + 또는 iOS5 +에서 UIPickerView의 프로그래밍 방식 애니메이션이 매우 갑작스럽고 UIPickerView를 수동으로 튀길 때 부드럽게 감속하는 것과 같이 부드럽 지 않은 것으로 변경되었습니다. 누구 제안? – Bogatyr

0

합니다. 다시로드하면 애니메이션이 중지 될 수 있으므로 실제로 피커의 내용을 변경하지 않으므로 필요하지 않습니다.

+0

나는 그것을 제거하고 여전히 똑같은 아이디어를 가지고 있습니까? 펜촉에 뭔가 있는거야? – nickthedude

관련 문제