我有一个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,但没有成功.任何帮助是极大的赞赏.谢谢.
我正在尝试使用IoC /依赖注入,同时编程为契约而不是特定的类.我所面临的困境是两者之间的紧张关系:
为IoC接口编程:我开始时IoC严重依赖接口.从Spring的示例项目来看,接口是在编写与IoC签订合同时的方法.
(...虽然抽象类通常是首选的:接口的主要缺点是,当允许API的演变时,它们的灵活性远远低于类)
通过构造函数使类依赖性显式化 我的直觉是,将依赖项传递给类的构造函数是一种很好的编程习惯.实际上,这是依赖注入.
...除非您不能在接口/抽象语句中强制执行构造函数签名:接口或抽象类都不允许定义构造函数签名(轻松/优雅).另请参见框架设计指南第4.4节: 不要在抽象类型中定义公共或受保护的内部构造函数....只有当用户需要创建该类型的实例时,构造函数才应该是公共的.
这个问题与之前的stackoverflow问题有关:定义构造函数签名的接口?
但我的问题是:
因为您无法在C#接口/抽象类中定义构造函数,正如上面的问题所要求的那样,在实际层面上:
你如何将这与通过构造函数传递依赖关系的明智做法相协调?
编辑:谢谢你的回答.我希望能在这种情况下对我应该做些什么有所了解.只是不使用contructor args?使用某种确实采用依赖关系的Init()方法?编辑2:谢谢你的答案,非常有帮助.
c# abstract-class dependency-injection interface inversion-of-control
有以下声明:
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变量之前的括号中的类型将变量提升为该类型).
所以我想我错了,也许有人可以告诉我怎么读这个,订单是什么?
谁能告诉我使用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)
谢谢.
假设我们有一个A类,B和C继承它.然后我们创建一个对A的引用数组,并用B和C填充它.现在我们决定要消除所有的C.有没有办法检查数组的每个字段实际上保持什么类型而不执行像returnType()函数那样多余的事情?
编辑:修复"A的数组"到"A的引用数组".
拆分这个最好的方法是什么:
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)
假设输入始终具有偶数个值.
如何从命令行通过蓝牙访问其他设备/计算机上的文件?
我无法想出一个正则表达式,它基本上会将某些特殊字符列入黑名单.
我需要使用它来验证输入字段中的数据(在Java Web应用程序中).我们希望允许用户输入任何数字,字母(我们需要包括重音字符,例如法语或德语)和一些特殊字符,例如' - .等等
如何将<>%$等字符列入黑名单?
任何帮助将不胜感激.
情况如下.
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当它是一个类时看起来像一个接口.选项如下.
IFooCollection- 我不喜欢这个,因为它看起来像一个界面.FooCollection- 我不喜欢这个,因为它不是foos的集合.FooBaseCollection因为所有的实现IFoo派生自FooBase- 我不喜欢这个,因为这可能永远不会是真的.IList<IFoo>因为只有一个完整的方法 - 我不喜欢这样,因为更改代码因为找不到类的名称...是的,这是令人讨厌的.那你会怎么做?我错过了一个命名约定吗?我们基本上使用这个Microsoft .NET库标准.
UPDATE
代码不会变得普遍 - 它只是在GUI工具中将一些数据放入服务器.所以我不关心将这些方法与其他集合一起使用或忽略这些方法.
interface ×2
.net ×1
bind ×1
bluetooth ×1
c ×1
c# ×1
c++ ×1
casting ×1
collections ×1
command-line ×1
each ×1
function ×1
iphone ×1
java ×1
javascript ×1
jquery ×1
landscape ×1
name-length ×1
oracle ×1
pointers ×1
polymorphism ×1
python ×1
regex ×1
tuples ×1
typechecking ×1