小编Dav*_*ist的帖子

使用块时避免保留周期的正确方法是什么

在NSMutableArray中添加对象的正确方法是什么,该对象由属性强烈定义.

[tapBlockView setTapBlock:^(UIImage* image) {
   [self.myImageArray addObject:image]; // self retain cycle
}
Run Code Online (Sandbox Code Playgroud)

如果我将创建弱引用之类的东西

__weak NSMutableArray *array = self.myImageArray;
[tapBlockView setTapBlock:^(UIImage* image) {
    [array addObject:image]; // If I will do this then how will I update original Array ?
}
Run Code Online (Sandbox Code Playgroud)

我也试过了

__weak id weakSelf = self;
[tapBlockView setTapBlock:^(UIImage* image) {
    [weakSelf storeImageInaNewMethod:image]; // Calling SToreImageInaNewMethod
}
Run Code Online (Sandbox Code Playgroud)

-(void)storeImageInaNewMethod:(UIImage*)image {
   [self.myImageArray addObject:image]; // This again retaining cycle
}
Run Code Online (Sandbox Code Playgroud)

更新属性定义的原始对象的正确方法是什么?

iphone block objective-c weak automatic-ref-counting

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

UILabel没有更新

对不起基本问题,但现在这让我有点困扰.

我从UITable创建一个详细信息视图,并尝试动态设置其标签,但他们没有更新:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  myObject *tmpObj = [[myObject objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

  myViewController *tmpVC = [[myViewController alloc] initWithNibName:@"NIBfile" bundle:nil];

  [tmpVC.myLabel setText:tmpObj.myTitle];   // The debugger shows the text: myTitle = "myText"
  NSLog(@"%@", tmpVC.myLabel);              // NSLog SHOWS NULL

  [self.navigationController pushViewController:tmpVC animated:YES];
  [tmpObj release];
}
Run Code Online (Sandbox Code Playgroud)

Interface Builder中的连接已设置.显示文件所有者的"连接"选项卡

'myLabel' - 'Label (myLabel)'
Run Code Online (Sandbox Code Playgroud)

任何想法为什么价值没有通过?

还有一些观察:

  • 我也连接了IBAction.单击连接按钮时,可以正确调用此方法.
  • 我得到了一些指向我的NSLog语句的指针,是否应该更好地使用tmpVC.myLabel.text,但尝试也返回NULL.
  • myLabel在界面中声明为IBOutlet UILabel*myLabel.该属性定义为非原子,保留.

有光:

在玩了一下之后,我将pushViewController语句移到了标签更新之上.这解决了标签更新问题.

工作代码如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 myObject *tmpObj = [[myObject objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

 myViewController *tmpVC = [[myViewController alloc] initWithNibName:@"NIBfile" bundle:nil];

 [self.navigationController pushViewController:tmpVC …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c

9
推荐指数
1
解决办法
7015
查看次数

NSPredicate按年蛾日过滤

我使用Core Data来存储我的数据模型对象.每个对象都有NSDate属性.

NSDate属性的格式如下:

2013-03-18 12:50:31 +0000
Run Code Online (Sandbox Code Playgroud)

我需要创建谓词,这个谓词只是通过这个值来获取我的对象2013-03-18而没有时间.

date core-data nspredicate ios

9
推荐指数
1
解决办法
2609
查看次数

如何在使用故事板时继承Navigation Controller?

我在界面构建器中使用故事板使用Xcode菜单'Editor ... Embed in ... Navigation Controller'.

似乎在iOS 6中你必须将UINavigationController子类化为允许所有方向

- (NSUInteger)supportedInterfaceOrientations {
    return (UIInterfaceOrientationMaskAll   );
}
Run Code Online (Sandbox Code Playgroud)

但是,如何将UINavigationController与故事板应用程序子类化,因为代码中没有对它的引用?

iphone storyboard uinavigationcontroller subclassing uiinterfaceorientation

8
推荐指数
1
解决办法
3637
查看次数

如何动画使用AutoLayout向上滑动UIView?

这就是我想要实现的目标: 在此输入图像描述

我想执行一个向上滑动动画,用户可以向上滑动UIView2,UIView2将在屏幕中途停止.

我知道如何通过UIButton动作以模态方式呈现UIViewControler,如下所示:

[self presentViewController:newController animated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)

我也知道你需要这种类型的动画代码:

[UIView animateWithDuration:0.5f animations:^{
    [self.customView layoutIfNeeded];
} completion:^(BOOL finished) {

}];
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何使用UIViews实现这一点,特别是因为我将AutoLayout用于我的项目,并且我使用约束来轻松支持多种屏幕尺寸.

如何在不破坏AutoLayout和我设置的约束的情况下实现这一目标?

谢谢

objective-c uiview ios

8
推荐指数
1
解决办法
5012
查看次数

如何将参数传递给NSAction?

好吧,每个人都知道在ObjC我们有

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
Run Code Online (Sandbox Code Playgroud)

请注意,completion块具有BOOL参数.现在让我们来看看Monotouch:

public static void Animate (double duration, double delay, UIViewAnimationOptions options, NSAction animation, NSAction completion)
Run Code Online (Sandbox Code Playgroud)

NSAction是:

public delegate void NSAction ();
Run Code Online (Sandbox Code Playgroud)

只是没有任何争论的代表.此外,在Monotouch"内部"我们可以看到:

public static void Animate (double duration, double delay, UIViewAnimationOptions options, 
NSAction animation, NSAction completion)
{
    UIView.AnimateNotify (duration, delay, options, animation, delegate (bool x)
    {
        if (completion != null)
        {
            completion ();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

注意delegate (bool x),它就像我需要的那样调用函数.现在,我如何通过Action<bool>完成UIView.Animate

c# uikit xamarin.ios uiviewanimation ios

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

Objective-c中的.h和.m文件

我今天正在寻求知识.

我正在研究一些工作代码,经过审查后我有一个完整的脑屁并且不记得为什么我们用Objective-c中的.h和.m文件做某事

  1. 我想知道为什么我们导入文件并在.h文件中声明方法名称?(我知道它与处理有关,但不记得细节)
  2. 为什么我们有时会直接将文件导入.m文件而不是某些情况下的.h文件中.
  3. 当您在.h文件中声明一个方法时,您是否这样做是因为您使用的类和/或库不执行某个功能,您也需要它们吗?
  4. 是否有一种情况,您声明了一个在您的.m文件中的任何库或.h文件中不存在的方法?

谢谢大家,我希望一切都有意义.

objective-c

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

使用翻译动画将视图从一个布局转换为另一个布局

我是Android动画的新手,我的要求是在点击该视图时将视图从一个布局转换为单个xml文件中的布局.

场景:假设我单击一个按钮,它出现在xml文件中标题的顶部,它应该向下移动/转换(它应该会产生影响,它位于另一个布局向下到标题),而且我也想要当用户再次点击相同时,它现在应该移动到其原始位置.

在这里,我用我的xml文件解释:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/app_bg"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/top"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/header"
        android:paddingLeft="10dp"
        android:paddingRight="10dp" >

        <Button
            android:id="@+id/btnSearchHeader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_centerInParent="true"
            android:background="@drawable/search_icon" />


    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/bottom"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/app_transparent"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_marginTop="10dp"
        android:visibility="visible" >

        <Button
            android:id="@+id/btnMenu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="5dp"
            android:text="ABC" />

        <Button
            android:id="@+id/btnSearchSelected"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/btnMenu"
            android:text="CDE" />
    </RelativeLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

更精确的要求规格(请仔细阅读:)

这里我有两个子内部布局: -

顶部布局 - id->顶部底部布局 - id - >底部

现在一个视图(按钮 - > btnSearchHeader)位于我的顶部布局中,我希望在单击该按钮时将相同的动画设置为底部布局(它应该会产生一个影响,它将翻译动画转换为底部布局)当用户点击该按钮时,它应该再次转换回原始位置并使用翻译动画..即它应该显示在顶部布局中

我不知道如何使用翻译动画来提供这些影响,但是我只有一个基本的翻译动画知识,这对我来说不足以满足我的要求.

任何类型的相关帮助都是可观的.

谢谢

android android-layout translate-animation

7
推荐指数
1
解决办法
3332
查看次数

ios动画.嵌套动画如何影响持续时间?

假设我有一个定时的UIAnimation,格式为

[UIView animateWithDuration:DURATION_X
                 animations:^
 {
     [function that might contain a separate animation with DURATION_Y]
 }
                 completion:^(BOOL finished)
 {
     [function that might contain a separate animation with DURATION_Z]
 }];
Run Code Online (Sandbox Code Playgroud)

如果嵌套动画中也有持续时间,那么它会如何影响外部动画?无论DURATION_X恰好是什么,内部动画是分别用DURATION_Y和DURATION_Z执行的吗?或DURATION_Y动画按比例缩小或缩短相对于DURATION_X结束,假设DURATION_X <= DURATION_Y?

基本上,我简单地问我们如何安全地控制内部动画的持续时间,以确保它们执行DURATION_Y(而不是一些较短的版本),即使最外面的动画有不同的DURATION_X?

objective-c uiviewanimation ios

6
推荐指数
1
解决办法
2001
查看次数

SCNLookAtConstraint,指定节点如何查看目标节点?

我有一个文本节点.我告诉节点总是这样看相机节点:

let lookAt = SCNLookAtConstraint(target: cameraNode)
textNode.constraints = [lookAt]
Run Code Online (Sandbox Code Playgroud)

在应用该约束之前,文本如下所示:(见图片) 在此输入图像描述

如果我应用该约束,则节点看起来像在图像中一样翻转(参见图像).因此,文本始终保持该方向并正确查看相机节点,因此约束正在起作用.

在此输入图像描述

我试图了解节点如何"看"目标节点.我显然希望文本在摄像机四处移动时保持在第一张图像中显示.

我试图对文本应用旋转来纠正我在应用约束时得到的行为但是没有用.

那么,我怎样才能让文本看到另一个节点但不像第二张图像那样被翻转?

scenekit

6
推荐指数
2
解决办法
5003
查看次数