我是一个iOS新手.我有一个选择器方法如下 -
- (void) fooFirstInput:(NSString*) first secondInput:(NSString*) second
{
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试实现这样的东西 -
[self performSelector:@selector(fooFirstInput:secondInput:) withObject:@"first" withObject:@"second" afterDelay:15.0];
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误说 -
Instance method -performSelector:withObject:withObject:afterDelay: not found
Run Code Online (Sandbox Code Playgroud)
关于我缺少什么的任何想法?
我正在尝试使用选择器创建一个按钮,我的按钮可以具有以下状态:
根据上述状态.我需要操纵按钮:
该按钮从我被禁用开始,因此它应该具有禁用的textColor和禁用的按钮背景.但我可以看到默认的textColor(在样式中指定)和没有背景图像!
这是我的选择器button_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false"
android:state_enabled="false"
android:textColor="#9D9FA2"
android:drawable="@drawable/button" />
<item android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/button_pressed"/>
<item android:state_pressed="true"
android:state_enabled="false"
android:textColor="#9D9FA2"
android:drawable="@drawable/button"/>
<item android:state_pressed="false"
android:state_enabled="true"
android:drawable="@drawable/button"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
这是我的layout.xml中的按钮声明
<Button android:id="@+id/reserve_button"
android:text="@string/reserve_button"
android:layout_width="120dp"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:paddingRight="15dp"
android:layout_gravity="left"
style="@style/buttonStyle"
android:background="@drawable/button_selector" />
Run Code Online (Sandbox Code Playgroud)
最后这是我的风格(我的默认textColor设置)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="buttonStyle">
<item name="android:textStyle">bold</item>
<item name="android:textColor">#282780</item>
<item name="android:textSize">18sp</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
请帮忙!
我正在使用iPhone SDK(3.0),我正在尝试创建一个选择器数组,以在一个类中调用各种方法.
显然,我做错了(我认为@selector不被认为是一个类,因此将它们填充到NSArray中是行不通的).
我试过这个,但这显然是错的.
有一个简单的方法来拥有这样的选择器数组吗?或者是否有更好的方法来迭代一组方法?
selectors = [NSArray arrayWithObjects:
@selector(method1),
@selector(method2),
@selector(method3),
@selector(method4),
@selector(method5),
@selector(method6),
@selector(method7), nil];
for (int i = 0; i < [selectors count]; i++) {
if ([self performSelector:[selectors objectAtIndex:i]]) // do stuff;
}
Run Code Online (Sandbox Code Playgroud) 我已经为按钮应用了一个形状,如:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient android:startColor="#DD000000" android:endColor="#DD2d2d2d" android:angle="90"></gradient>
<corners android:radius="15dip"></corners>
</shape>
Run Code Online (Sandbox Code Playgroud)
现在我想使用一个选择器,如:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/active"
android:state_pressed="true" />
<item android:drawable="@drawable/passive"/>
Run Code Online (Sandbox Code Playgroud)
对于这个按钮也是如此.可能吗 ...???
我是swift的新手,我看到一些方法,如:
@objc private func doubleTapGestureRecognized(recognizer: UITapGestureRecognizer)
Run Code Online (Sandbox Code Playgroud)
我想知道什么时候使用@objc?我读了一些文档,但是他们说当你希望它在Objective-C中可以调用时,你应该添加@objc标志
但是,这是一个快速的私有函数,@ obj做了什么?
我需要检测用户何时点击导航栏上的"后退"按钮,以便在发生这种情况时执行某些操作.我正在尝试手动将动作设置为这样的按钮,这样:
[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
,所以我将相同的代码移动到父视图控制器,后者将前者推送到导航堆栈.但我无法让它发挥作用.我已经阅读了一些关于这个问题的帖子,其中一些人说需要在父视图控制器上设置选择器,但对我来说它无论如何都不起作用......我怎么可能做错了?
谢谢
[ 注意这个问题最初是在Swift 2.2下制定的.它已针对Swift 4进行了修订,涉及两个重要的语言更改:第一个方法参数external不再自动被抑制,并且选择器必须显式地暴露给Objective-C.
假设我的课程中有这两种方法:
@objc func test() {}
@objc func test(_ sender:AnyObject?) {}
Run Code Online (Sandbox Code Playgroud)
现在我想使用Swift 2.2的新#selector
语法来创建一个与这些方法中的第一个相对应的选择器func test()
.我该怎么做?当我尝试这个:
let selector = #selector(test) // error
Run Code Online (Sandbox Code Playgroud)
......我得到一个错误,"模糊地使用test()
." 但如果我这样说:
let selector = #selector(test(_:)) // ok, but...
Run Code Online (Sandbox Code Playgroud)
......错误消失了,但我现在指的是错误的方法,一个带参数的方法.我想引用没有任何参数的那个.我该怎么做?
[注意:这个例子不是人为的.NSObject有Objective-C copy
和copy:
实例方法,Swift copy()
和copy(sender:AnyObject?)
; 所以问题很容易在现实生活中出现.]
如何将参数传递给NSTimer调用的方法?我的计时器看起来像这样:
[NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(updateBusLocation) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)
我希望能够将字符串传递给方法updateBusLocation.另外,我应该在哪里定义updateBusLocation方法?在我创建计时器的同一个.m文件中?
编辑:
其实我还有问题.我收到错误消息:
由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' * - [MapKitDisplayViewController updateBusLocation]:无法识别的选择器发送到实例0x4623600'
这是我的代码:
- (IBAction) showBus {
//do something
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateBusLocation) userInfo:txtFieldData repeats:YES];
[txtFieldData release];
}
- (void) updateBusLocation:(NSTimer*)theTimer
{
NSLog(@"timer method was called");
NSString *txtFieldData = [[NSString alloc] initWithString:(NSString*)[theTimer userInfo]];
if(txtFieldData == busNum.text) {
//do something else
}
}
Run Code Online (Sandbox Code Playgroud)
编辑#2:没关系,您的示例代码可以正常工作,感谢您的帮助.
我有一个ImageButton
在我的应用程序,我需要在按钮时更改图像的色调pressed/focused
.我有一个从XML文件ImageButton
获取它的集合,src
如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item
android:state_pressed="true"
android:tint="@color/black"
android:drawable="@drawable/search"
/>
<!-- focused -->
<item
android:state_focused="true"
android:tint="@color/black"
android:drawable="@drawable/search"
/>
<!-- default -->
<item
android:tint="@null"
android:drawable="@drawable/search"
/>
</selector>
Run Code Online (Sandbox Code Playgroud)
但是,ImageButton
按下或聚焦时不会应用色调- 图像只显示正常.黑色一直定义为黑色#000000
.有任何想法吗?
selector ×10
ios ×4
objective-c ×4
android ×3
button ×2
swift ×2
cocoa-touch ×1
image ×1
imagebutton ×1
iphone ×1
nsarray ×1
nstimer ×1
private ×1
tint ×1
xml ×1