小编hat*_*ike的帖子

使用segues在NavController中嵌入UIViewController

我有一个viewController,通常(通常)使用push segue访问.这个viewController需要嵌入UINavigationController中.通常,这不是问题.push segue管理推送viewController,因此viewController有它的UINavigationController.

我的问题是,在少数情况下,我想使用模态segue呈现这个相同的viewController.当我这样做时,viewController没有嵌入到navigationController中.有没有办法用segues做到这一点?

我知道这可以通过创建UINavigationController纯粹在没有segue的代码中完成,将rootView设置为viewController,然后以模态方式呈现.这可以使用这样的代码完成:

MyViewController *viewController = [[MyViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self presentModalViewController:navController animated:YES];
Run Code Online (Sandbox Code Playgroud)

但是我如何使用Segues做同样的事情呢?

更新


为了进一步说明,这里有一些代码来补充我在prepareForSegue方法中使用接受的答案的方式.

使用模态瞄准时

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Modal to MyVC"])
    {
        UINavigationController *nav = [segue destinationViewController];
        MyViewController *vc = [nav topViewController];
        //setup vc
    }
}
Run Code Online (Sandbox Code Playgroud)

使用Push Segue时

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue destinationViewController] isEqualToString:@"Push to MyVC"])
    {
        MyViewController *vc = [segue destinationViewController];
        //setup vc
    }
}
Run Code Online (Sandbox Code Playgroud)

uinavigationcontroller ios uistoryboard uistoryboardsegue

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

核心数据多线程导入(重复对象)

我有一个NSOperationQueue,它将对象导入Core Data,这是我从web api获得的.每个操作都有我的应用程序的主要managedObjectContext的私有子managedObjectContext.每个操作都会获取要导入的对象,并检查该对象是否已存在,在哪种情况下它会更新现有对象.如果该对象不存在,则创建此新对象.然后,私有子上下文的这些更改将传播到主要托管对象上下文.

这个设置对我来说非常好用,但是有一个重复的问题.

当我在两个不同的并发操作中导入相同的对象时,我得到具有完全相同数据的重复对象.(它们都检查对象是否存在,并且它们看起来不存在).我将在同一时间导入2个相同对象的原因是我经常处理"新"api调用以及"获取"api调用.由于我的设置同时具有异步性质,因此很难确保我不会尝试导入重复的对象.

所以我的问题是解决这个特定问题的最佳方法是什么?我考虑过限制导入到最大并发操作为1(由于性能,我不喜欢这样).类似地,我考虑在每次导入操作之后要求保存并尝试处理上下文的合并.另外,我之后考虑过修饰数据以偶尔清理重复数据.最后,我考虑过只处理所有获取请求的重复项.但是这些解决方案对我来说都不是很好,也许我已经看过一个简单的解决方案了.

multithreading core-data objective-c nsoperation nsmanagedobjectcontext

13
推荐指数
2
解决办法
1603
查看次数

Phonegap/Sencha语言本地化

问题:
我即将实现语言本地化到已经非常大的ipad应用程序,该应用程序是使用包含在phonegap中的sencha touch构建的.我在json文件中有英文和西班牙文翻译.

我正在计划做什么:
我计划将json文件加载到sencha触摸存储中,创建一个全局对象.然后在我调用显示的文本的每个地方,我将通过调用全局对象替换文本.

我的问题:

  1. 有没有更简单的方法来实现我的设置语言本地化?

  2. 我会遇到本机sencha的问题(比如datepickers)吗?

  3. 加载/重新加载语言json文件时,是否会出现性能问题(需要webview重新加载?,sencha对象调整大小等问题)


编辑1:有用的相关信息:
对于那些沿着这条路走下去的人来说,编写一个简单的phonegap插件以便将ipad/iphone设备的语言设置变成你的javascript很快就会变得很有用.这需要一个插件,它看起来像这样:
Javascript:
第1部分:

PhoneGap.exec("PixFileDownload.getSystemLanguage");
Run Code Online (Sandbox Code Playgroud)

第2部分(回调函数):

setLanguage(returnedLanguage)
{
   GlobalVar.CurrentLanguage = returnedLanguage; //GloablVar.CurrentLanguage already defined
}
Run Code Online (Sandbox Code Playgroud)

目标C:

-(void)getSystemLanguage:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options
{
    /*Plugin Details
    PhoneGap.exec("PixFileDownload.getSystemLanguage");
    Returns Language Code
    */

    NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
    NSArray* languages = [defs objectForKey:@"AppleLanguages"];
    NSString *language = [languages objectAtIndex:0];
    NSLog(@"####### This is the language code%@",language);
    NSString  *jsCallBack;
    jsCallBack = [NSString stringWithFormat:@"setLanguage('%@');",language];    
[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];

}
Run Code Online (Sandbox Code Playgroud)

编辑2:字符编码 将其他语言字符添加到sencha项目(或任何webview phonegap项目)时,请确保在索引文件中指定了正确的编码.这是我需要的标签.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Run Code Online (Sandbox Code Playgroud)

json localization ios sencha-touch cordova

11
推荐指数
1
解决办法
3805
查看次数

NSPredicate predicateWithFormat传递属性名称

关于NSPredicate的简单问题.我正在尝试用"传入"值构造我的谓词,如下所示:

NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ];
Run Code Online (Sandbox Code Playgroud)

但是,我无法使其正常工作.如果我插入实际值,我通过它确实工作.这样可行:

NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"contactId == %@",[changesDict valueForKey:@"Id"] ];
Run Code Online (Sandbox Code Playgroud)

(注意我插入了contactId,而不是前一个用同名传递字符串的例子)

要解决我的NSLogged两个谓词看他们的描述,他们是不同的.我会在下面给他们看.

这是工作的

2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878"
Run Code Online (Sandbox Code Playgroud)

这是非工作的

2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878"
Run Code Online (Sandbox Code Playgroud)

所以我可以看到它插入一个字符串,我真的只想要我稍后将在获取请求中使用的属性的名称.但有没有办法通过传递价值来实现这一目标?

core-data nspredicate ios

5
推荐指数
1
解决办法
3551
查看次数