小编Tig*_*ing的帖子

在不使用导航控制器堆栈,子视图或模态控制器的情况下更改视图控制器的动画?

NavigationControllers具有ViewController堆栈来管理和限制动画过渡.

将视图控制器作为子视图添加到现有视图控制器需要将事件传递给子视图控制器,这很难管理,几乎没有烦恼,并且通常在实现时感觉像是一个糟糕的黑客(Apple也建议不要这样做).

呈现模式视图控制器再次将视图控制器放在另一个上面,虽然它没有上面描述的事件传递问题,但它并没有真正"交换"视图控制器,而是堆叠它.

故事板仅限于iOS 5,几乎是理想的,但不能在所有项目中使用.

有人可以在没有上述限制的情况下更改视图控制器的方式提供一个SOLID代码示例,并允许它们之间的动画过渡?

一个接近的例子,但没有动画: 如何在没有导航控制器的情况下使用多个iOS自定义视图控制器

编辑:导航控制器使用很好,但需要动画过渡样式(不仅仅是幻灯片效果),显示的视图控制器需要完全交换(不是堆叠).如果第二个视图控制器必须从堆栈中删除另一个视图控制器,那么它的封装不够.

编辑2:iOS 4应该是这个问题的基本操作系统,我应该在提到故事板时澄清(上图).

iphone uiviewcontroller uianimation ipad ios

141
推荐指数
3
解决办法
8万
查看次数

无法在Xcode中拖动(制作代码段)

当我按照所有说明(包括苹果的视频)拖动文本以在xcode中创建代码片段时,我得到了一个不同的系统行为:我看到的只是选择ibeam ...我无法拖动.它最终会再次选择文本.我错过了一些明显的Apple主义吗?谢谢

xcode code-snippets

79
推荐指数
3
解决办法
8529
查看次数

如何更改Xcode 4中的类前缀?

在Xcode 4中创建项目时,它会询问要添加到所有新文件的类前缀.

在项目启动后,有没有办法改变(或删除)这个?

xcode xcode4 xcode4.2 xcode4.3

75
推荐指数
3
解决办法
2万
查看次数

使用reloadRowsAtIndexPaths重新加载时,为什么我的表视图单元格会消失?

我这里有一个简单的示例项目:

http://dl.dropbox.com/u/7834263/ExpandingCells.zip

在这个项目中,UITableView有一个自定义的UITableViewCell.在每个单元格中有3个包含标签的UIViews.

目标是在敲击时扩展单元格,然后在再次敲击时将其折叠.单元格本身必须更改其高度以显示子视图.插入或删除行是不可接受的.

演示项目几乎按预期工作.事实上,在iOS 4.3中,它的工作非常完美.然而,在iOS 5下,当行崩溃时,先前的单元格神奇地消失.

要重新创建问题,请在iOS 5的模拟器或设备中运行项目,然后点击第一个单元格以展开它.然后再次点击该单元格以折叠它.最后,直接点击它下面的单元格.前一个消失了.

继续点击该部分中的每个单元格将导致所有单元格消失,直到整个部分缺失的位置.

我也尝试使用reloadData而不是当前的设置,但这会破坏动画并且感觉有点像黑客.reloadRowsAtIndexPaths应该可以工作,但问题是为什么不呢?

查看下面发生的事情的图像:

表格出现:

表出现了

细胞扩展:

表扩展

细胞塌陷:

桌子倒塌了

细胞消失(当敲击下面的细胞时):

细胞消失了

不断重复,直到整个部分消失:

部分消失了

编辑: 覆盖alpha是一个黑客,但有效.这是另一个"黑客"修复它,但为什么它修复它?

JVViewController.m第125行:

if( previousIndexPath_ != nil )
{
    if( [previousIndexPath_ compare:indexPath] == NSOrderedSame ) currentCellSameAsPreviousCell = YES;

    JVCell *previousCell = (JVCell*)[self cellForIndexPath:previousIndexPath_];

    BOOL expanded = [previousCell expanded];
    if( expanded )
    {
        [previousCell setExpanded:NO];
        [indicesToReload addObject:[previousIndexPath_ copy]];
    }
    else if( currentCellSameAsPreviousCell )
    {
        [previousCell setExpanded:YES];
        [indicesToReload addObject:[previousIndexPath_ copy]];
    }

    //[indicesToReload addObject:[previousIndexPath_ copy]];
}
Run Code Online (Sandbox Code Playgroud)

编辑2:

对演示项目做了一些小改动,值得检查并查看JVViewController didSelectRowAtIndexPath方法.

iphone objective-c uitableview ios

19
推荐指数
4
解决办法
2万
查看次数

如何调整UIButton的大小以适应文本,而不会超出屏幕范围?

我有一个UIButton,我想调整大小以适应其中的任何文本.它的设置宽度为280,但文本应该换行到下一行,并根据需要扩展按钮的高度.

我已经为Word Wrap设置换行符并尝试使用sizeToFit,但这只会使按钮变宽,而不是垂直.

iphone uibutton

17
推荐指数
3
解决办法
3万
查看次数

扩展表格视图单元格消失

我通过setExpanded:方法调用改变高度来扩展单元格.

然后我调用reloadRowsAtIndexPaths:刷新单元格.

问题是细胞消失并随机重新出现.我怀疑这与索引工作方式有关.

如果我调用reloadData或beginUpdates/endUpdates,单元格按预期工作,但我丢失了动画.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    JVCell *cell = (JVCell*)[tableView cellForRowAtIndexPath:indexPath];
    JVCell *previousCell = nil;

    if( previousIndexPath_ != nil ) // set to nil in viewDidLoad
    {
        previousCell = (JVCell*)[tableView cellForRowAtIndexPath:previousIndexPath_];
    }


    // expand or collapse cell if it's the same one as last time
    if( previousCell != nil && [previousIndexPath_ compare:indexPath] == NSOrderedSame && [previousCell expandable] )
    {
        [previousCell setExpanded:![cell expanded]];
        NSArray *indexPathArray = [NSArray arrayWithObject:previousIndexPath_];
        [tableView reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationAutomatic];
    }
    else
    {
        // collapse previous …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview ios

17
推荐指数
2
解决办法
5605
查看次数

将反弹效果添加到UIImageView的外观中

当我要将UIImageView显示为子视图时,如何添加反弹效果?我必须使用CoreAnimation来做到这一点吗?我现在唯一的猜测是使用CAKeyframeAnimation,如果有更好的方法,请告诉我.这是我目前的代码:

 CABasicAnimation * theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
    theAnimation.delegate = self;
    theAnimation.duration = 1.0;
    theAnimation.fromValue = [NSNumber numberWithFloat:notif.center.y];
    theAnimation.toValue = [NSNumber numberWithFloat:notif.center.y-20];
    theAnimation.repeatCount = 3;
Run Code Online (Sandbox Code Playgroud)

iphone core-animation objective-c ipad

14
推荐指数
2
解决办法
2万
查看次数

为什么XCode会显示启动图像警告?

我在iPad启动图像中收到以下警告,但不是iPhone图像:

发射图像ipad

我无法在任何地方找到与警告相关的文字.

这是我的plist设置:

plist ipad图像

和我的图像文件:

图像文件名

当我尝试"Default-iPad.png"时,它也没有解决它.

图像尺寸为768 x 1024(纵向)和1024 x 768(横向).

iphone xcode ipad ios xcode4

13
推荐指数
1
解决办法
5575
查看次数

如何在推送的视图控制器下弹出视图控制器?

我想将视图控制器推入堆栈,然后弹出第一个推动新控制器的控制器.

-(void) someMethod {
    MegaSuperAwesomeViewController *tempVC = [[MegaSuperAwesomeViewController alloc] init];
    [self.navigationController pushViewController:tempVC animated:YES];
    [tempVC release];

    // pop this VC, how?
}
Run Code Online (Sandbox Code Playgroud)

编辑:事实证明,一旦完成新的VC,我可以弹出2个视图控制器.仍然不是我想要的,但它的确有效.缺点是我需要设置一个标志来指示覆盖的视图已完成.

iphone ipod uiviewcontroller uinavigationcontroller ipad

10
推荐指数
2
解决办法
2万
查看次数

如何在Xcode 4中使用git移动文件和文件夹?

我熟悉Xcode中组和实际目录之间的差异.我总是在finder中创建一个实际的文件夹并将其拖到项目中,确保取消选中"copy".

当我移动文件夹时,我只通过引用删除项目,在finder中移动它们,然后重新添加它们.

现在我第一次使用git,并在我的测试中发现,如果我使用上述方法删除目录,我就无法进行提交.Xcode告诉我它无法切换到目录,因为"没有这样的文件或目录".根据我在网上找到的内容,在Xcode中完成目录更改时,git不会收到通知.

如何在Xcode 4中使用git移动文件和文件夹,让编译器和git知道移动,以便我可以提交?

git iphone xcode ios xcode4

7
推荐指数
2
解决办法
2904
查看次数