问题列表 - 第7038页

tabBarController和navigationControllers在横向模式中,第二集

我有一个UITabBarController,每个选项卡处理一个不同的UIViewController,根据需要推送堆栈的新控制器.在其中两个选项卡中,当达到特定控制器时,我需要能够旋转iPhone并以横向模式显示视图.经过艰苦的努力,我发现必须继承UITabBarController以覆盖shouldAutorotateToInterfaceOrientation.但是,如果我只是在实现中返回YES,则会出现以下不良副作用:

旋转iPhone时,每个标签中的每个控制器都会自动进入横向模式.

甚至覆盖shouldAutorotateToInterfaceOrientation在每个控制器中返回NO不起作用:当iPhone旋转时,控制器处于横向模式.

我在子类UITabBarController中实现了如下的shouldAutorotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if([self selectedIndex] == 0 || [self selectedIndex] == 3)
        return YES;

    return NO;
}
Run Code Online (Sandbox Code Playgroud)

因此,只有我感兴趣的两个选项卡实际上支持横向模式.有没有办法在特定选项卡的堆栈上支持特定控制器的横向模式?

我尝试过没有成功的事情

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

if([self selectedIndex] == 0 || [self selectedIndex] == 3)
{   
   if ([[self selectedViewController] isKindOfClass: [landscapeModeViewController class]])
           return YES;
    }

     return NO;
Run Code Online (Sandbox Code Playgroud)

}

另外,我尝试使用委托方法didSelectViewController,但没有成功.任何帮助是极大的赞赏.谢谢.

iphone landscape uitabbarcontroller uiviewcontroller

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

通过构造函数在IoC中实现依赖关系?

我正在尝试使用IoC /依赖注入,同时编程为契约而不是特定的类.我所面临的困境是两者之间的紧张关系:

  1. 为IoC接口编程:我开始时IoC严重依赖接口.从Spring的示例项目来看,接口是在编写与IoC签订合同时的方法.

  2. (...虽然抽象类通常是首选的:接口的主要缺点是,当允许API的演变时,它们的灵活性远远低于类)

  3. 通过构造函数使类依赖性显式化 我的直觉是,将依赖项传递给类的构造函数是一种很好的编程习惯.实际上,这依赖注入.

  4. ...除非您不能在接口/抽象语句中强制执行构造函数签名:接口或抽象类都不允许定义构造函数签名(轻松/优雅).另请参见框架设计指南第4.4节: 不要在抽象类型中定义公共或受保护的内部构造函数....只有当用户需要创建该类型的实例时,构造函数才应该是公共的.

这个问题与之前的stackoverflow问题有关:定义构造函数签名的接口?

但我的问题是:

因为您无法在C#接口/抽象类中定义构造函数,正如上面的问题所要求的那样,在实际层面上:

你如何将这与通过构造函数传递依赖关系的明智做法相协调

编辑:谢谢你的回答.我希望能在这种情况下对我应该做些什么有所了解.只是不使用contructor args?使用某种确实采用依赖关系的Init()方法?编辑2:谢谢你的答案,非常有帮助.

c# abstract-class dependency-injection interface inversion-of-control

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

关于C中函数指针的一个问题

有以下声明:

void qsort(void *lineptr[], int left, int right, int (*comp)(void *, void *));
int numcmp(char *, char *);
int strcmp(char *s, char *t);
Run Code Online (Sandbox Code Playgroud)

然后,在程序的某个地方有以下调用:

  qsort((void**) lineptr, 0, nlines-1, 
                    (int (*)(void*,void*))(numeric ? numcmp : strcmp));
Run Code Online (Sandbox Code Playgroud)

(忽略前三个参数和numeric).

我问这是什么:

(int (*)(void*,void*))(numeric ? numcmp : strcmp)
Run Code Online (Sandbox Code Playgroud)

我明白,qsort期待一个"指向函数的指针获得两个void指针并返回一个int"作为它的第四个参数,但是上面的内容是如何满足的呢?在我看来,它似乎是某种类型的演员,因为它是由两个括号组成的,但那将是一个非常奇怪的演员.因为它需要一个函数并使这个函数成为"指向函数的指针,它获取两个void指针并返回一个int".这没有意义.
(我在这里遵循一个规则,即type变量之前的括号中的类型将变量提升为该类型).

所以我想我错了,也许有人可以告诉我怎么读这个,订单是什么?

c pointers casting function-pointers

6
推荐指数
3
解决办法
2519
查看次数

在jQuery中使用bind()和each()分配事件处理程序之间的区别?

谁能告诉我使用bind()分配事件处理程序之间的区别:

$(function(){
           $('someElement')
           .bind('mouseover',function(e) {
            $(this).css({
                        //change color
                        });
    })
    .bind('mouseout',function(e) {
        $(this).css({
                    //return to previous state

                 });    
    })
    .bind('click',function(e) {
        $(this).css({
                    //do smth.
                 });    
    })

}); 
Run Code Online (Sandbox Code Playgroud)

并使用each()执行相同的任务:

$('someElement').each(function(){

        $(this).mouseover(function(){$(this).css({/*change color*/})
                    .mouseout(function(){$(this).css({/*return to previous state*/});   
                    });     
                }); 
    });
Run Code Online (Sandbox Code Playgroud)

谢谢.

javascript each jquery bind function

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

检查多态中的实变量类型(C++)

假设我们有一个A类,B和C继承它.然后我们创建一个对A的引用数组,并用B和C填充它.现在我们决定要消除所有的C.有没有办法检查数组的每个字段实际上保持什么类型而不执行像returnType()函数那样多余的事情?

编辑:修复"A的数组"到"A的引用数组".

c++ polymorphism typechecking

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

Python中的多元组到双组元组?

拆分这个最好的方法是什么:

tuple = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
Run Code Online (Sandbox Code Playgroud)

进入这个:

tuples = [('a', 'b'), ('c', 'd'), ('e', 'f'), ('g', 'h')]
Run Code Online (Sandbox Code Playgroud)

假设输入始终具有偶数个值.

python tuples data-structures

11
推荐指数
3
解决办法
9147
查看次数

来自命令行的蓝牙

如何从命令行通过蓝牙访问其他设备/计算机上的文件?

command-line cross-platform bluetooth platform-agnostic

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

183
推荐指数
5
解决办法
24万
查看次数

用于排除特殊字符的正则表达式

我无法想出一个正则表达式,它基本上会将某些特殊字符列入黑名单.

我需要使用它来验证输入字段中的数据(在Java Web应用程序中).我们希望允许用户输入任何数字,字母(我们需要包括重音字符,例如法语或德语)和一些特殊字符,例如' - .等等

如何将<>%$等字符列入黑名单?

任何帮助将不胜感激.

java regex

31
推荐指数
6
解决办法
21万
查看次数

如何命名界面集合?

情况如下.

public interface IFoo { }

public abstract class FooBase : IFoo { }
Run Code Online (Sandbox Code Playgroud)

现在我需要IFoo一些额外的方法集合.

public class IFooCollection : List<IFoo>
{
   public void UsefullMethod() { }
}
Run Code Online (Sandbox Code Playgroud)

问题是,IFooCollection当它是一个类时看起来像一个接口.选项如下.

  1. 保持它IFooCollection- 我不喜欢这个,因为它看起来像一个界面.
  2. 把它命名FooCollection- 我不喜欢这个,因为它不是foos的集合.
  3. 把它变成FooBaseCollection因为所有的实现IFoo派生自FooBase- 我不喜欢这个,因为这可能永远不会是真的.
  4. 不要创建类,而是提供扩展方法,IList<IFoo>因为只有一个完整的方法 - 我不喜欢这样,因为更改代码因为找不到类的名称...是的,这是令人讨厌的.
  5. 我没有想到或忘记写下来的东西 - 我希望我会喜欢它!

那你会怎么做?我错过了一个命名约定吗?我们基本上使用这个Microsoft .NET库标准.

UPDATE

代码不会变得普遍 - 它只是在GUI工具中将一些数据放入服务器.所以我不关心将这些方法与其他集合一起使用或忽略这些方法.

.net collections interface naming-conventions

0
推荐指数
2
解决办法
276
查看次数