林與我的UISCrollView
,UIScrollVIew
是在我View2Controller
,我的UIScrollView
具有圖像,這從我ImagePicker
拾取圖像(多/單圖像)進口縮略圖。我把[self createScrollView];
放在viewDidAppear
,所以在我第一次加載的時候只看到UIScrollView
,顯然是因爲我還沒有選擇圖片。所以在我選擇它之後,我沒有更新。但我的images.count正在我的調試器中更新。它不是在視圖中更新,但當我去另一個ViewController
然後再次返回到View2Controller
,它加載圖像在我的UIScrollView
,然後當我再次添加圖像它不更新。爲什麼會這樣?的UIScrollView不加載/更新具有問題正確
- (void)addImage:(UIImage *)image {
[_images addObject:image];
[_thumbs addObject:[image imageByScalingAndCroppingForSize:CGSizeMake(60, 60)]];
}
- (void) createScrollView {
[scrollView setNeedsDisplay];
int row = 0;
int column = 0;
for(int i = 0; i < _thumbs.count; ++i) {
UIImage *thumb = [_thumbs objectAtIndex:i];
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(column*60+10, row*60+10, 60, 75);
[button setImage:thumb forState:UIControlStateNormal];
[button addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
button.tag = i;
[scrollView addSubview:button];
if (column == 4) {
column = 0;
row++;
} else {
column++;
}
}
[scrollView setContentSize:CGSizeMake(300, (row+1) * 60 + 10)];
}
- (void)viewDidAppear:(BOOL)animated
{
[self createScrollView];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.slotBg = [[UIView alloc] initWithFrame:CGRectMake(43, 370, 310, 143)];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.slotBg.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor grayColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[self.slotBg.layer insertSublayer:gradient atIndex:0];
[self.view addSubview:self.slotBg];
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f,0.0f,300.0f,130.0f)];
[slotBg addSubview:self.scrollView];
for(int i = 0; i <= 100; i++)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"oneSlotImages%d.png", i]];
NSLog(@"savedImagePath=%@",savedImagePath);
if([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]){
[self addImage:[UIImage imageWithContentsOfFile:savedImagePath]];
NSLog(@"file exists");
}
}
NSLog(@"Count : %d", [_images count]);
}
編輯:(在這一部分,圖像無法從視圖中刪除,但在我的NSDocumentDirectory
被刪除。)
- (IBAction)buttonClicked:(id)sender {
_clickedButton = (UIButton *)sender;
UIAlertView *saveMessage = [[UIAlertView alloc] initWithTitle:@""
message:@"DELETE IMAGE?"
delegate:self
cancelButtonTitle:@"NO"
otherButtonTitles:@"YES", nil];
[saveMessage show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"YES"]) {
NSLog(@"YES was selected.");
UIButton *button = _clickedButton1;
[button removeFromSuperview];
[_images1 objectAtIndex:button.tag];
[_images1 removeObjectAtIndex:button.tag];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"firstSlotImages%lu.png", button.tag]];
[fileManager removeItemAtPath: fullPath error:NULL];
NSLog(@"image removed");
}
爲什麼當你已經有一個問題時你需要創建一個新問題:同樣的問題? http://stackoverflow.com/questions/11130757/uiscrollview-not-updating-and-displaying-properly – Rog
@ Kobe.o4 - 這是同樣的問題?這是一個單獨的問題,但你拿走了我的答案,因爲我沒有回答你沒有發佈的問題呢?無論如何,'[_images1 objectAtIndex:button.tag]; [_images1 removeObjectAtIndex:button.tag];'這工作? button.tag是否有適當的索引?此外,爲什麼你收集的對象,但不使用它。 ['_images1 removeObject:button]不是更好嗎?''? –
@MichaelBoselowitz,對不起。但是'[_images1 removeObject:button];'在我看來還沒有刪除。 – Bazinga