小编Mic*_*all的帖子

viewWillDisappear:确定是正在弹出视图控制器还是正在显示子视图控制器

我很难找到解决这个问题的好方法.在视图控制器的-viewWillDisappear:方法中,我需要找到一种方法来确定是否因为视图控制器被推到导航控制器的堆栈上,或者是否因为视图控制器因弹出而消失.

目前我正在设置标志,isShowingChildViewController但它变得相当复杂.我认为我可以检测它的唯一方法是在-dealloc方法中.

iphone cocoa-touch uiviewcontroller uikit ios

132
推荐指数
6
解决办法
8万
查看次数

检测UIScrollView页面更改

当用户在启用分页的UIScrollView中更改页面时,有没有办法检测或获取通知?

iphone objective-c uiscrollview uiscrollviewdelegate ipad

77
推荐指数
6
解决办法
5万
查看次数

在UIViewController中布置和调整子视图的大小

我有一个带有a的应用程序,UITabController每个选项卡都是一个UINavigationController.我UINavigationControllers的一个根是一个UIViewController.

在视图控制器的视图中,我想布局一些子视图,但我很困惑在哪里以及如何以与分辨率无关的方式布局它们(即不是硬编码值,如320px,480px,44px等. ).

当视图完全加载并呈现在垂直iPhone上时,它的高度将是367px = 480-20(状态栏) - 44(导航栏) - 49(标签栏).

在视图控制器中,我当前在viewDidLoad方法中创建了所有子视图.但是,在此方法中,视图的当前高度似乎是460px(self.view.bounds.size.height).因此,在设置我的子视图时,我无法正确计算任何内容的大小.

在该viewWillAppear:方法中,视图确实知道它的大小合适,但这意味着每次出现视图时设置和计算子视图的帧(例如,选项卡更改或从导航堆栈上的子视图控制器弹出).

这是正确布局的唯一方法viewWillAppear:吗?

我尝试过使用autoresizing属性(parent's autoresizesSubviews&autoresizingMask),但它们似乎根本不起作用!?这些仅在视图全部设置后才生效,然后调整大小(手动/方向更改?).

如果有人能让我知道为什么自动调整不起作用,以及如何通过不对任何大小的硬编码来解决问题,我将不胜感激.

iphone cocoa-touch uikit uiview

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

核心数据:查询谓词中的objectID?

我使用获取请求和谓词从Core Data持久性存储中获取一组对象.我当前的谓词只是检查属性是否> =某个值.这一切都很好,除了我想最终排除当前在数组中保存的任何对象.

我基本上需要能够排除一组对象,我认为我能做到这一点的唯一方法是能够objectID从我的托管对象数组中获取一个列表,并在我的谓词中创建另一个表达式以确保任何对象返回不一样objectID.IE @"ANY records.objectID NOT IN %@", arrayOfObjectID.

我怎样才能做到这一点?

predicate core-data fetch

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

Objective-C中的实例变量默认设置为nil吗?

我正在用我的iPhone应用程序解决一些内存问题,我一直在考虑一些基础知识.如果我设置了一个ivar并且永远不会在我的对象的生命周期中使用它,当我在其上调用dealloc时,会导致问题吗?例如

@interface testClass {
    id myobject;
}
@property (nonatomic, retain) id myobject;
@end

@implementation testClass
@synthesize myobject;
- (id)init {
    ...
    // Do I have to set myobject to nil here?
    // So if myobject isn't used the dealloc call to nil
    // will be okay? Or can you release the variable without
    // having set every object to nil that you may may not use 
    ...
}

...

// Somewhere in the code, myobject may be set to
// …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa cocoa-touch memory-management objective-c

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

NSOperation中的异步方法

我从Facebook Connect获取一些数据(使用FBConnect Objective-C 2.0框架),我正在NSOperation中完成所有这些工作.它在NSOperation中,因为我还运行了其他几个操作,这就是其中之一.

问题是所有FBConnect调用都是异步的.因此,NSOperation的主要方法快速完成,操作标记为已完成.

有办法克服这个问题吗?看来FBConnect中没有同步选项!

非常感谢,

麦克风

iphone asynchronous fbconnect nsoperation

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

iPhone呈现模态视图控制器时崩溃

我试图在另一个视图以模态方式呈现后直接显示模态视图(第二个是出现的加载视图).

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // Show load
    LoadViewController *loader = [[LoadViewController alloc] init];
    [self presentModalViewController: loader animated:NO];
    [loader release];
}
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我得到一个"程序接收信号:"EXC_BAD_ACCESS"." 错误.

堆栈跟踪是:

0  0x30b43234 in -[UIWindowController transitionViewDidComplete:fromView:toView:]
1  0x3095828e in -[UITransitionView notifyDidCompleteTransition:]
2  0x3091af0d in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:]
3  0x3091ad7c in -[UIViewAnimationState animationDidStop:finished:]
4  0x0051e331 in run_animation_callbacks
5  0x0051e109 in CA::timer_callback
6  0x302454a0 in CFRunLoopRunSpecific
7  0x30244628 in CFRunLoopRunInMode
8  0x32044c31 in GSEventRunModal
9  0x32044cf6 in GSEventRun
10 0x309021ee in UIApplicationMain
11 0x00002154 in main at main.m:14
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我完全难过了!加载视图为空,因此肯定没有任何事情导致错误.是否与在同一个事件循环中以模态方式启动2个视图有关? …

iphone crash memory-management uiviewcontroller

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

@synchronized()和NSLock的区别

我有一个代码块,可以经常访问主线程或其他几个后台线程.我需要确保一次只处理一个代码.

我目前正在使用一个@synchronized(self) { }块,但我不确定这是否提供了正确的保护.它与NSLock实例有何不同?

最后,任何人都可以建议我如何保护我的方法?该方法在我的应用程序委托中,我通过调用以下方法从各种线程访问它:

[[[UIApplication sharedApplication] delegate] myMethod];
Run Code Online (Sandbox Code Playgroud)

非常感谢,

麦克风

iphone multithreading ios

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

有没有相当于NSTokenField控件的iPhone?

在我的应用程序中,我希望用户在UITextField(或等效文件)中键入名称,然后当他们按下返回时,它会将该单词放在通常与标签相关联的蓝色气泡中.然后光标移动到可以添加更多"标签"的末尾.

在Mail应用程序的To,CC和BCC字段中添加联系人时,以及在Messages应用程序中选择联系人时,可以看到这一点.

这是怎么做到的?它是UIKit中提供的还是其他地方提供的东西?

非常感谢,

迈克尔

iphone input uitextfield uitextview

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

将重试封装到`with`块中

我希望将数据库事务的逻辑封装到一个with块中; 将代码包装在事务中并处理各种异常(锁定问题).这很简单,但是我想让块在某些异常后封装代码块的重试.我无法看到一种方法将它整齐地打包到上下文管理器中.

是否可以在with语句中重复代码?

我想像它一样使用它,这真的很整洁.

def do_work():
    ...
    # This is ideal!
    with transaction(retries=3):
        # Atomic DB statements
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

我目前正在使用装饰器处理它,但我更愿意提供上下文管理器(或实际上两者),所以我可以选择在with块中包含几行代码而不是包装在装饰器中的内联函数,这就是我现在所做的:

def do_work():
    ...
    # This is not ideal!
    @transaction(retries=3)
    def _perform_in_transaction():
        # Atomic DB statements
        ...
    _perform_in_transaction()
    ...
Run Code Online (Sandbox Code Playgroud)

python exception-handling with-statement contextmanager

28
推荐指数
3
解决办法
4329
查看次数