iphone - 在 NSDocumentDirectory 和 UIScrollView 中删除
<p><p>我的代码有问题,能够在 <code>UIScrollView</code> 中使用带有图像的缩略图进行预览。我的图片来自 <code>NSDocumentDirectory</code>。虽然我可以从中删除,但是当我从右到左位置开始时,我可以正确地从中删除(就 <code>VIEW</code> 和 <code>NSDocumentDirectory</code> 而言)。 </p>
<p><strong>问题:</strong>
现在,无论如何我都可以删除,但是我有一些问题。 </p>
<ul>
<li><p><strong>首先</strong>,虽然我可以删除,但 View 没有排列,我的 <code>rearrangeItems:</code> 方法也没有被调用。 </p></li>
<li><p><strong>第二</strong>,然后在第一次加载我可以删除任何我喜欢的,但就像我说的那样 <code>rearrangeItems:</code> 方法没有被调用,所以他们的名字
没有<code>重命名</code>。</p></li>
<li><p><strong>第三</strong>,是第一次加载,无论如何我都可以删除,但是当我退出应用程序时,我可以删除但我在 <code>NSDocu</code> 中的图像是不删除。</p></li>
</ul>
<p>希望任何人都可以帮助我。下面是我的代码预览。</p>
<pre><code>- (void)addImage:(UIImage *)imageToAdd {
;
];
int row = floor(( - 1) / 5);
int column = (( - 1) - (row * 5));
UIImage *thumb = -1];
UIButton *button = ;
button.frame = CGRectMake(column*60+10, row*60+10, 60, 60);
;
;
button.tag = - 1;
// This is the title of where they were created, so we can see them move.s
forState:UIControlStateNormal];
;
;
// This will add 10px padding on the bottom as well as the top and left.
;
}
- (void) deleteItem:(id)sender {
_clickedButton = (UIButton *)sender;
UIAlertView *saveMessage = [ initWithTitle:@""
message:@"DELETE?"
delegate:self
cancelButtonTitle:@"NO"
otherButtonTitles:@"YES", nil];
;
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = ;
if() {
NSLog(@"YES was selected.");
UIButton *button = _clickedButton;
;
;
NSFileManager *fileManager = ;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = ;
NSString *fullPath = ];
;
;
}
}
- (void)viewDidAppear:(BOOL)animated
{
;
for(int i = 0; i <= 100; i++)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = ;
NSString *savedImagePath = ];
NSLog(@"savedImagePath=%@",savedImagePath);
if([ fileExistsAtPath:savedImagePath]){
];
//NSLog(@"file exists");
}
}
NSLog(@"Count : %d", );
}
</code></pre>
<hr/>
<p><strong>更新:新的重新排列方法</strong></p>
<pre><code>- (void)rearrangeItems:(int)startIndex {
for (UIButton *button in _buttons) {
// Shift the tags down one
if (button.tag > startIndex) {
NSLog(@"called here");
// Version 2 ****************************
NSFileManager *fileManager = ;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = ;
NSString *fullPath = ];
NSData *imageData = ;
;
// **************************************
button.tag -= 1;
// Version 2 ****************************
fullPath = ];
;
// **************************************
// Recalculate Position
int row = floor(button.tag / 5);
int column = (button.tag - (row * 5));
// Move
button.frame = CGRectMake(column*61+8, row*61+8, 60, 60);
if (button.tag == - 1) {
;
}
}
}
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您显示“rearrangeButtons”但从不使用它 - 我认为上面的代码已过时。无论如何,这里有一些小问题:</p>
<pre><code>;
;
;
</code></pre>
<p>第一个和最后一个语句没有意义,你应该使用的是:</p>
<pre><code>;
;
</code></pre>
<p>要仅向应用添加健全性检查,请尝试将此代码添加到重新排列按钮的末尾:</p>
<pre><code>int idx = 0;
for (UIButton *button in _buttons) {
NSLog(@"Going to query button at index %d", idx);
NSLog(@"Button at index %d is of type %@", idx, NSStringFromClass();
// if the button is not a UIView subclass, it won't have tag. If its a dealloced
// object then it probably will crash when you ask it its class...
if(button.tag != idx) NSLog(@"INDEX PROBLEM AT BUTTON ARRAY INDEC %d", idx);
++idx;
}
</code></pre>
<p>编辑:循环编辑代码以打印出对象类</p>
<p>EDIT2:所以我把你的代码放到了一个新项目中,<a href="http://dl.dropbox.com/u/60414145/ButtonManager.zip" rel="noreferrer noopener nofollow">ButtonManager</a> .基本上没问题,但你有一些问题。首先,即使不存在文件,也要对文件名进行索引,因此索引可能会不同步。其次,您对 button.tag 使用 %lu 格式,但这是一个整数,因此您应该使用“%d”。最后,从数组中删除按钮,但不删除图像或缩略图。</p>
<p>如果您下载该项目,您将在需要更改才能正常工作的所有位置看到警告。我不确定为什么按钮索引被破坏了——也许是其他代码。在任何情况下,都会在代码中添加一个数据一致性测试——在你的代码中到处调用它——如果它失败了,那么你就知道你的问题是在最后一个好的测试和最近一个失败的测试之间。</p>
<p>项目启动时会启动“deleteItem:”消息,并且只要您点击"is",就会一直删除数组中间的项目。</p></p>
<p style="font-size: 20px;">关于iphone - 在 NSDocumentDirectory 和 UIScrollView 中删除,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/12188281/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/12188281/
</a>
</p>
页:
[1]