所以我有一个简单的用户界面,一个开始按钮,一些文本/标签和一个进度条.单击"开始"按钮时,NSProgressIndicator 应设置动画.这是我的代码:
@synthesize progressBar = progressBar;
/* Some code and setup stuffs... */
- (IBAction)startAction:(id)sender {
NSLog(@"Button clicked.");
NSLog(@"Beginning Socketry and socket creation...");
[progressBar setUsesThreadedAnimation:YES];
[progressBar setIndeterminate:YES];
[progressBar startAnimation:progressBar];
}
Run Code Online (Sandbox Code Playgroud)
我检查了多个源(Apple Developer Portal等),但没有任何效果.我不必拥有NSPIndicator,但如果可以的话,它会非常好.另外,这是我的AppDelegate.h文件:
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (weak) IBOutlet NSProgressIndicator *progressBar;
- (IBAction)saveAction:(id)sender;
- (IBAction)startAction:(id)sender;
- (IBAction)changeStatus:(id)sender;
- (IBAction)changeProgress:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud) 我有一个带有导入自定义actionBar的主屏幕.我在一个单独的.xib文件中创建了这个actionBar,其中包含.m和.h文件.
我做了一些图形设置在我actionBar.m的viewDidLoad喜欢backgroundColor和一些其他的东西.
我也有一个按钮,actionBar我通常链接按钮的方式链接,用IBAction.
我将actionBar加载到我的主屏幕中,如下所示:
ActionBarWithLogoff *actionBar = [[ActionBarWithLogoff alloc] initWithNibName:@"ActionBarWithLogoff" bundle:nil];
[topBar addSubview:actionBar.view];
[actionBar release];
Run Code Online (Sandbox Code Playgroud)
我的actionBar.h:
- (IBAction)ActionBarLogoff:(id)sender;
Run Code Online (Sandbox Code Playgroud)
我的actionBars.m的方法:
-(void) ActionBarLogoff:(UIButton *)sender
{
NSLog(@"!!!!!!!!!!ActionBarLogoff");
}
Run Code Online (Sandbox Code Playgroud)
这是我的错误钢铁图片,当我点击按钮我得到以下错误:
2014-01-27 13:52:21.856 GB_Mobil_DK [2954:60b] - [__ NSArrayM ActionBarLogoff:]:无法识别的选择器发送到实例0x1656d880 2014-01-27 13:52:21.858 GB_Mobil_DK [2954:60b] *终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因是: ' - [__ NSArrayM ActionBarLogoff:]:无法识别的选择发送到实例0x1656d880'*第一掷调用堆栈:(0x2f94be83 0x39ca86c7 0x2f94f7b7 0x2f94e0af 0x2f89cdc8 0x32104da3 0x32104d3f 0x32104d13 0x320f0743 0x3210475b 0x32104425 0x320ff451 0x320d4d79 0x320d3569 0x2f916f1f 0x2f9163e7 0x2f914bd7 0x2f87f471 0x2f87f253 0x345b92eb 0x32134845 0x97985 0x3a1a1ab7)libc ++ abi.dylib:以NSException类型的未捕获异常终止
有谁能告诉我为什么?最重要的是能够帮我解决这个问题^^?
在我的程序中,2个函数(IBAction player.Move(UIButton)和autoMove())应该轮流调用,直到所有字段(UIButtons)都被点击.为此,我创建了一个函数play().但是,我不知道如何将IBAction playerMove放在play()函数内部,因为这里我不需要参数.
我找到了一些答案并尝试过self.playerMove(nil),self.playerMove(self)但它不起作用.
import UIKit
class ViewController: UIViewController {
@IBOutlet var cardsArray: Array<UIButton> = []
var randomCard = 0
override func viewDidLoad() {
super.viewDidLoad()
self.play()
// Do any additional setup after loading the view, typically from a nib.
}
func play () {
self.autoMove()
self.playerMove(self) // <----- here is my problem
}
@IBAction func playerMove(sender: UIButton) {
switch (sender) {
case self.cardsArray[0]:
self.cardPressedAll(0)
case self.cardsArray[1]:
self.cardPressedAll(1)
case …Run Code Online (Sandbox Code Playgroud) 当我编写通用应用程序时,假设我有这样的IBAction:
(IBAction)magicCode:(id)sender {
textField1.text = "TEST";
}
Run Code Online (Sandbox Code Playgroud)
我是否需要为每个视图(iPad和iPhone)创建新的IBAction.我不能在头文件中使用textField1两次,所以我只是想知道其他人是如何做到这一点的.我是否需要在iPhone应用程序中放置一个文本字段,其名称与iPad应用程序中的名称不同?或者其他人是否有其他方式这样做?
我有一个最佳实践/风格问题.假设我有一个IBAction方法,我不需要sender参数(我知道如果我确实需要它,如何使用sender参数).人们建议将(id)发送者留在方法声明中以保持一致性,或者为了简洁而将其排除?在功能上,这里没有正确的答案,只是好奇人们认为可维护性/同行评审/等等的最佳实践.谢谢.
选项A:
-(IBAction)foo:(id)sender;
Run Code Online (Sandbox Code Playgroud)
选项B:
-(IBAction)foo;
Run Code Online (Sandbox Code Playgroud) 我有一个UIButton连接到Interface Builder中的IBAction.
问题:
事实:
问题: 为什么开火和去高亮延迟了?
我意识到,在处理XIB文件时启动辅助编辑器时,默认情况下不再打开头文件,而是显示实现文件.我不知道有新的工作流程吗?在实现文件中,我似乎只能添加IBActions.什么是"新"创作方式IBOutlets?每次都切换到头文件?
我希望首先从下面的链接下载该项目,然后继续问题(仅36kb)
一开始我的情况如下.

当我单击"我的办公室"按钮时,我正在调用actionSeenButton将要打印的操作NSLog(@"actionSeenButton");
- (IBAction)actionSeenButton:(id)sender {
NSLog(@"actionSeenButton");
}
Run Code Online (Sandbox Code Playgroud)
这很完美.
当我点击显示隐藏按钮时,我按100滑动视图并显示我顶部的图像和按钮,如下图所示

使用的代码是
- (IBAction)showHiddenButton:(id)sender {
CGAffineTransform translation = CGAffineTransformIdentity;
translation = CGAffineTransformMakeTranslation(0, 100);
[UIView beginAnimations:nil context:nil];
self.view.transform = translation;
[UIView commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)
当我点击这个按钮时,我正在调用actionHiddenButton将要打印的动作NSLog(@"actionHiddenButton");
- (IBAction)actionHiddenButton:(id)sender {
NSLog(@"actionHiddenButton");
}
Run Code Online (Sandbox Code Playgroud)
但问题是,当我点击我看到的新按钮时,动作没有被调用.
知道为什么会这样吗?
当我将顶部隐藏按钮从y = -70移动到y = 170时,动作将被调用.
示例项目可以从这里下载
我想要实现的是,通过向下移动视图,在一行的顶部显示三个按钮(如菜单).
在我创建应用程序的过程中,xcode 不再允许我按住 Ctrl 键并将 UIButton 拖动到 VC 来创建 IBAction。每个 VC 都会发生这种情况(总共九个)。不过,它确实允许创建 Outlet。(请查看图片 -> 没有显示任何操作选择)
xcode 版本 7.2 (7C68) 构建目标是 ios9。
有没有办法来解决这个问题?
我有一个简单的例子。我使用 ctrl 将左 button1 和 label1 连接到控制器类。
如何以编程方式对右侧的 button2 label2 执行相同的操作(无需按住 ctrl 拖动)
那是我的代码:
class ViewController: NSViewController {
@IBOutlet weak var label1: NSTextField! //connected with ctrl-drag
@IBOutlet weak var button1: NSButton! //connected with ctrl-drag
@IBOutlet weak var label2: NSTextField! //not yet connected
@IBOutlet weak var button2: NSButton! //not yet connected
@IBAction func button1Pressed(_ sender: Any) //connected with ctrl-drag
{ label1.stringValue = "button-I"
button1.title = "pressed"
}
@IBAction func button2Pressed(_ sender: Any) //not yet connected
{ label2.stringValue = "button-II"
button2.title = …Run Code Online (Sandbox Code Playgroud)