小编Ja͢*_*͢ck的帖子

在应用程序启动时从故事板中选择备用第一视图控制器

我刚开始学习iOS编程,到目前为止,我在这里找到的教程和答案对我们的进展非常有帮助.然而,这个特殊问题一直困扰着我,我无法找到"感觉正确"的答案.

我正在编写一个连接到远程服务的应用程序,用户需要先登录才能使用它.当他们开始使用应用程序时,他们的第一个视图应该是登录对话框; 当他们之前进行身份验证时,他们会立即看到概述页面.

该项目使用故事板 - 我认为这是一个很棒的功能 - 因此大多数选择和加载根视图控制器的代码已经处理好了.我想补充我的逻辑的最好的地方就是application:didFinishLaunchingWithOptions:方法AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
      (NSDictionary *)launchOptions
{
    // select my root view controller here based on credentials present or not
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但这提出了两个问题:

  1. 在这个特定的委托方法中,根据故事板已经选择(并加载了?)根视图控制器.我可以移动到加载过程中的早期位置来覆盖第一个视图控制器选择,还是会使问题不必要地复杂化?

  2. 要覆盖第一个视图控制器,我需要对故事板的引用,但我找不到比使用storyboardWithName:bundle:构造函数更好的方法UIStoryboard.这感觉不对,应用程序应该已经有了故事板的参考,但我怎样才能访问它?

更新

我找到了我遇到的第二个问题,因为我在这里找到了答案:

UIStoryboard:获取活动故事板的正确方法是什么?

NSBundle *bundle = [NSBundle mainBundle];
NSString *sbFile = [bundle objectForInfoDictionaryKey:@"UIMainStoryboardFile"];
UIStoryboard *sb = [UIStoryboard storyboardWithName:sbFile bundle:bundle];
Run Code Online (Sandbox Code Playgroud)

以上将创建一个新的故事板实例; 获取活动实例,它更简单:

UIStoryboard *sb = [[self.window rootViewController] storyboard];
Run Code Online (Sandbox Code Playgroud)

在故事板文件本身中,您必须为要加载的视图设置标识符,例如LoginDialog.之后,您实例化视图,如下所示:

LoginViewController *login = [sb instantiateViewControllerWithIdentifier:@"LoginDialog"];
[self.window setRootViewController:login];
Run Code Online (Sandbox Code Playgroud)

在另一个视图控制器中,以下内容足够: …

iphone storyboard ios5

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

阻止现代IE?

阻止IE绝对不是最佳实践,但它符合我对现有应用程序的要求.最有效的方法是什么,因为IE 10 中没有条件注释?对于IE 9及更低版本,这将起作用:

<!--[if IE]>
<script type="text/javascript">
window.location = "/IEblocked.html";
</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

假设有一个最佳实践JavaScript解决方案,有什么陷阱我可以找到?我想知道是否存在以下问题:

  • 触发事件的顺序
  • iframe 我无法控制的元素
  • 在其他<script>标记的上下文中优先使用JS解决方案
  • 脚本通过该document.write('<script type="text/javascript" src="foo.js"></script>');方法加载.

我有一种感觉,很多人可能会被迫大喊"使用Modernizr""你疯了吗,不要把DOM放在DOM中!" 不幸的是,应用程序很大,此时一些增强功能超出了范围.

javascript internet-explorer browser-detection

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

在PHP中,需要在必需的文件?

在PHP中,如果我有一个文件,需要一个子目录中的文件,如:

require('directory/file.php');
Run Code Online (Sandbox Code Playgroud)

并且file.php想要在其自己的目录中要求另一个文件,是相对于file.php它的路径还是包含在其中的文件?

php require

12
推荐指数
3
解决办法
4661
查看次数

如何以三角形形式打印整数

我想打印三角形的整数,看起来像这样

    1
   121
  12321
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但我没有得到实际的结果

for($i=1;$i<=3;$i++)
 {
    for($j=3;$j>=$i;$j--)
    {
      echo "&nbsp;&nbsp;";
    }
   for($k=1;$k<=$i;$k++)
    {
      echo $k;
    }
   if($i>1)
    {
      for($m=$i; $m>=1; $m--)
         {
           echo $m;
         }
     }      
    echo "<br>";
}
Run Code Online (Sandbox Code Playgroud)

此代码的输出是:

   1
  1221
 123321
Run Code Online (Sandbox Code Playgroud)

我哪里出错了,请指导我.

php algorithm complexity-theory

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

JavaScript何时何地运行,PHP如何?我能把两者结合起来吗?

何时运行像JavaScript这样的客户端语言,何时运行像PHP这样的服务器端语言?我怎么能混合两者?

我想在点击我网站上的按钮时运行PHP函数,或者从PHP运行JavaScript函数; 那可能吗?

javascript php

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

试图理解InnoDB表上的MySQL死锁

我试图理解MySQL在同一个表上的并发客户端处理期间发现的死锁.这是"SHOW InnoDB STATUS"命令的有趣部分:

------------------------
LATEST DETECTED DEADLOCK
------------------------
120704 16:17:51
*** (1) TRANSACTION:
TRANSACTION 0 3547576, ACTIVE 0 sec, process no 10886, OS thread id 140547111458560 inserting
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 368, 1 row lock(s), undo log entries 1
MySQL thread id 41941, query id 1725666 localhost testsuite update
insert into `INode` (`status`,`_type`,`group`,`ctime`,`parent`,`shared`,`basename`,`_rowid`,`displayname`,`user`,`content_type`,`mtime`,`position`,`atime`,`size`) values ('Published','Group','12','2012-07-04 16:17:48.996869','2',null,'1','12','1','3','application/x-empty','2012-07-04 16:17:48.996896','1','2012-07-04 16:17:48.996914',null)
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space …
Run Code Online (Sandbox Code Playgroud)

mysql innodb transactions database-deadlocks

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

即使在创建后,存储过程也不存在

我正在尝试创建一个mysql存储过程.我已使用以下代码成功创建了一个过程:

delimiter $$
CREATE PROCEDURE `myprocedure` (IN
 var1 DATE) 
BEGIN 
<---code--> 
END
Run Code Online (Sandbox Code Playgroud)

SHOW CREATE PROCEDURE myprocedure
Run Code Online (Sandbox Code Playgroud)

向我展示了我创建的程序.

但是Call myprocedure(2011-05-31);

向我显示以下错误

#1305 - PROCEDURE db.myprocedure does not exist
Run Code Online (Sandbox Code Playgroud)

db是我创建过程的数据库

我做错了什么?

任何人都可以帮助我吗?

mysql database stored-procedures stored-functions

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

Android本地化工具

我在android中有文本资源,有些已经翻译,而有些则缺失.

是否有一个工具可以导入例如值xml文件以及意大利语的值xml文件,并检查缺少的内容并帮助插入缺少的翻译?

我尝试过OmegaT.该程序导入android资源并写入其中.但是,它没有显示已翻译的内容.Virtaal Translator不支持将xml文件作为输入.

我想在Eclipse之外有一个简单的工具,这样我就可以将这些工具提供给其他帮助翻译的工具.

android localization

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

试图理解为什么Laravel的许多静态方法不被认为是不好的做法

我很困惑.

我已经让Reddit上的一些开发人员查看了我的代码.看起来像这样.

Template::load('register', array('error_message' => Language::translate('username_in_use'));
Run Code Online (Sandbox Code Playgroud)

所以它加载register.php,用翻译替换{error_message}.(抱歉,此用户名正在使用中.请选择其他用户名.)

他们说使用太多静态调用是一种不好的做法.然而他们建议使用Laravel框架,它完全摆脱$ this并使用静态调用.

有人可以解释一下,如果这是不好的做法,Laravel是一个优雅的框架吗?

php laravel

10
推荐指数
1
解决办法
2518
查看次数

在javascript中将数组移到右边

我有这个数组:

var arr1 = ['a1', 'a2', 'a3', 'a4', 'a5'];
Run Code Online (Sandbox Code Playgroud)

我需要通过两个位置将它移到右边,比如说

arr1 = ['a4', 'a5', 'a1', 'a2', 'a3']; 
Run Code Online (Sandbox Code Playgroud)

这适用于左移:

arr1 = arr1.concat(arr1.splice(0,2)); // shift left by 2
Run Code Online (Sandbox Code Playgroud)

我明白了:

arr1 = ['a3', 'a4', 'a5', 'a1', 'a2']; 
Run Code Online (Sandbox Code Playgroud)

但是我不知道怎么做右移......

javascript

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