小编App*_*Dev的帖子

尝试在iOS中处理"后退"导航按钮操作

我需要检测用户何时点击导航栏上的"后退"按钮,以便在发生这种情况时执行某些操作.我正在尝试手动将动作设置为这样的按钮,这样:

[self.navigationItem.backBarButtonItem setAction:@selector(performBackNavigation:)];

- (void)performBackNavigation:(id)sender
{
   // Do operations

   [self.navigationController popViewControllerAnimated:NO];
}
Run Code Online (Sandbox Code Playgroud)

我首先将该代码放在视图控制器本身中,但我发现它self.navigationItem.backBarButtonItem似乎是nil,所以我将相同的代码移动到父视图控制器,后者将前者推送到导航堆栈.但我无法让它发挥作用.我已经阅读了一些关于这个问题的帖子,其中一些人说需要在父视图控制器上设置选择器,但对我来说它无论如何都不起作用......我怎么可能做错了?

谢谢

selector uinavigationbar uinavigationcontroller ios

71
推荐指数
5
解决办法
12万
查看次数

在Xcode中更改开发语言

我需要将西班牙语设置为iOS应用程序的开发语言.我已经在使用Xcode 6了,我将Localization native development regionapp Info.plist(CFBundleDevelopmentRegion)中的条目从"en"更改为"es".但是,在项目>信息>本地化中,英语仍设置为开发语言.

信息属性列表键参考中所述,CFBundleDevelopmentRegion指定默认语言.我需要将西班牙语设置为默认语言,我缺少什么?

谢谢

localization internationalization info.plist ios

59
推荐指数
4
解决办法
5万
查看次数

iOS中的多行用户输入:UITextField与UITextView

我需要向用户显示一个多行文本输入"框",其高度大于a的标准高度UITextField.什么是最好或最正确的方法应该是什么?:

  1. 使用a UITextField并在代码中更改其高度或应用某个高度约束.
  2. 使用可编辑的UITextView.这是多行的,但默认情况下它没有占位符,我想我应该在代码中实现该功能.

multiline uitextfield uitextview ios swift

38
推荐指数
4
解决办法
5万
查看次数

iOS上的通用链接与深层链接(URL方案)

在我阅读时,iOS 9引入了Universal Links.在Apple的App Search Programming Guide中的"支持通用链接"部分中,它说这与URL方案的深层链接不完全相同,但我不完全清楚这个主题:

  • Universal Link和URL Schemes之间的实际差异是什么?环球链接仅适用于网站,邮件或消息应用程序中的超链接吗?
  • Universal Links是否取代了URL方案?
  • Universal Links是一种深层链接吗?

url-scheme deep-linking ios ios9 ios-universal-links

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

performBlock:和performBlockAndWait之间的行为差​​异:?

我正在NSManagedObjectContext私有队列中创建一个处理来自文件和/或服务的数据更新:

NSManagedObjectContext *privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
privateContext.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator;
Run Code Online (Sandbox Code Playgroud)

由于我使用的是私有队列,我不完全理解performBlock:performBlockAndWait:方法之间的区别......为了执行我的数据更新,我目前正在这样做:

[privateContext performBlock: ^{

        // Parse files and/or call services and parse
        // their responses

        // Save context
        [privateContext save:nil];

        dispatch_async(dispatch_get_main_queue(), ^{
            // Notify update to user
        });
    }];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的数据更新是同步和顺序进行的,所以我认为这是保存上下文的正确位置,对吧?如果我做错了什么,如果你告诉我,我会很感激.另一方面,这段代码是否相同?:

[privateContext performBlockAndWait: ^{

        // Parse files and/or call services and parse
        // their responses

        // Save context
        [privateContext save:nil];
    }];

// Notify update to user
Run Code Online (Sandbox Code Playgroud)

我想这是保存上下文的正确位置......这两种方法之间有什么区别(如果有的话,在这种情况下)?

如果不是执行同步服务调用或文件解析,我需要执行异步服务调用怎么办?如何管理这些数据更新?

提前致谢

synchronization asynchronous core-data nsmanagedobjectcontext ios

25
推荐指数
1
解决办法
8858
查看次数

OperationQueue.main vs DispatchQueue.main

当你需要在网络任务或操作的完成块中的主线程上执行某些操作时,哪种方式获取它将是最合适的,为什么?:

  • OperationQueue.main.addOperation
  • DispatchQueue.main.async

ui-thread nsoperationqueue grand-central-dispatch ios swift

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

视图控制器以模态方式显示时,未在iOS 9中调用"viewWillTransitionToSize:"

我从另一个提出一个视图控制器:

- (void)showModalView
{
   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
   MySecViewController *mySecViewController = [storyboard instantiateViewControllerWithIdentifier:@"secController"];
   mySecViewController.delegate = self;
   [self presentViewController:mySecViewController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

然后在呈现中UIViewController,该方法viewWillTransitionToSize:withTransitionCoordinator:被调用iOS 8但不在iOS 9...

谢谢

uiviewcontroller screen-orientation autorotate ios presentviewcontroller

20
推荐指数
2
解决办法
8366
查看次数

Xcode项目组结构的最佳实践?

在提供代码示例的教程和示例中,有时我看到Xcode项目导航器中的项目文件按照MVC模式("视图","控制器","模型")按组排列,有时它们被组织成组按功能(例如"登录","清单").

关于iOS,Apple有什么约定/推荐吗?哪个应该是最好的做法?

directory xcode file project-structure ios

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

Xcode 6.3.2无法与会员中心通信

我刚刚提交了一个应用程序构建到App Store,用于使用TestFlight进行beta测试.构建已在iTunes Connect中正确加载,我可以将其发送给TestFlight进行审核,但我决定对代码进行一些更改,因此我从审核中删除了此类构建.我存档了我现在要上传的新版本以进行beta测试,突然我在Xcode中收到此警告:

与会员中心通信时发生错误.请提交错误并在Console.app中包含系统日志的副本

我没有对我的Apple Developer帐户做任何改动,正如我所说,我之前能够连接并上传一个已归档的应用程序......我看到我现在在Xcode的首选项>帐户中得到相同的警告尝试刷新其细节.我不明白为什么会这样,有人经历过同样的事情吗?

谢谢

xcode app-store ios

14
推荐指数
3
解决办法
2444
查看次数

iOS 5+中的Objective-C单例模式

我一直在阅读很多关于如何在objective-c中实现单例的线程和博客文章,其中一些可能有点被弃用(2010年或更早),似乎人们对此问题有不同的看法. .. Apple是否有关于实施单例的文档?我找不到它.如果是这样,有人可以告诉我在哪里?

我需要一个包含公共和私有变量的类的单例.目前,这是我对此类的实现:

@interface MySingleton ()
   @property (strong, nonatomic) NSString *state;
@end

@implementation MySingleton

@synthesize state = _state;
@synthesize count = _count;

static MySingleton *sharedObject = nil;

+ (MySingleton *)sharedInstance
{
   static dispatch_once_t _singletonPredicate;

   dispatch_once(&_singletonPredicate, ^{
      sharedObject = [[super allocWithZone:nil] init];
   });

   return sharedObject;
}

+ (id)allocWithZone:(NSZone *)zone 
{
   return [self sharedInstance];
}
Run Code Online (Sandbox Code Playgroud)

这应该是推荐的方式吗?我应该如何初始化实例变量public和private?

我想说明单例的另一个问题是:这会产生内存泄漏吗?在iOS中实际推荐使用单身人士吗?

谢谢

singleton initialization objective-c private-members ios

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