我试图了解Objective-C在iOS应用中MVC模式的实现。 现在我有一个DataProvider对象,它保存我的数据并将其提供给我的应用程序(Model)中的其他对象。 此外,我有一个视图(.xib)与一个额外的类( UIView ;让我们称之为“ViewClass”)。 我告诉我的视图是我的ViewClass的一个子类,所以我可以创buildIBOutlet到我的子视图,如标签和IBAction到我的button。 所以这显然是我在MVC模式中的视图。 最后但并非最不重要的,我有一个ViewController对象,它有一个对我的DataProvider的引用,并保存我的视图的对象。 当ViewController被加载到内存中时,它通过调用addSubview:(UIView *)view来实例化viewDidLoad的View并将其添加到其自己的addSubview:(UIView *)view 。 这是MVC模式中的我的控制器。 到目前为止好,但我不明白的是以下。 根据MCV-Pattern,View应该只显示ViewController提供的数据,它从Model中获取数据。 任何逻辑操作只能发生在ViewController因为它负责这种任务。 但是,如果我在我的“ ViewClass ”中创build一个IBAction ,我不得不在我的View中有一些编程逻辑。 可以说,我想提交一个表单,用户通过点击一个button在某个文本框中input的数据。 在我的ViewClass我有一个IBOutlet的文本字段,以便以后可以参考它,并阅读用户input的数据。 我有一个IBAction的button,可以捕捉点击事件。 发送数据的代码现在写在我的视图的IBAction方法中,所以我在我的视图中有程序逻辑。 对我的问题:这是不是违反了MVC模式? 我可能会传递我的ViewController引用到我的视图,而我创build视图的实例,然后调用我的ViewController在IBAction ,然后获取和发送数据的方法。 但我无法想象这是正确的做法。 或者我理解错了什么? 提前致谢。
我有一个子视图的VC。 在subview level我有一个button。 我希望button导致视图被更新。 IBAction代码在VC中。 它目前所做的只是切换一个BOOL值。 返回子视图drawRect:方法是testingBOOL并相应地更改视图的代码。 我的观察是,当按下button时,IBAction代码运行,切换BOOL ,但drawRect:方法不被调用。 我尝试手动调用drawRect(不好的做法,并没有工作)。 我试图调用setNeedsDisplay,但也没有工作(不知道如何引用子视图,这是创build程序)。 build议欢迎。 IBAction代码是微不足道的,但包括如下: – (IBAction)rotateWindowButtonWasPressed:(id)sender { // just flip the boolean here. Need to make the code change in drawRect: in top2View.m if ([myGlobals gWinVertical]) [myGlobals setGWinVertical:NO]; else [myGlobals setGWinVertical:YES]; // Hoping this would force a redraw, but bounds have to change…:( //_top2ViewOutlet.contentMode = UIViewContentModeRedraw; […]
我是iOS开发新手,请耐心等待 我正在创build一个简单的应用程序的过程。 有一个Facebookbutton,我想这个button发送用户到我的Facebook页面,无论是在浏览器中,或者如果他们的Facebook应用程序打开了。 我知道可能有很多要解释,但如果有人能指出我的方向是好的,谢谢。
我有一个UIButton,我想从一个UIButton事件中调用2个不同的动作,因为那个button需要做两件事,但是我需要按照一定的顺序来做。 无论我如何尝试,似乎都无法改变动作触发的顺序。 有没有办法让我来决定这个,还是随机的? IBActions按照什么顺序从同一个组件中被解雇? 有没有办法以特定的顺序打电话给他们?
我有用nib文件创build的UItableViewCell,并把我的单元格中的button。 我hace创build了一个IBAction关联一个动作,当用户点击button。但我有一个崩溃,我不知道这是什么问题,我已经设置了所有必要的事情。 //in my .h -(IBAction)go; //in my .m -(IBAction)go { NSLog(@"hello"); } 但是我有一个崩溃,没有什么是显示在CONSOLdebugging。 我怎么能在UITableviewcell中设置一个button,并与这个button关联一个动作。 感谢您的回答
我从一个UIButton拖动2个IBAction ,一个用touchDown事件,另一个用Drag Inside拖动。 – (IBAction)clickButton:(UIButton *)sender { NSLog(@"Click Button"); } – (IBAction)dragInsideButton:(UIButton *)sender { NSLog(@"Drag Button"); } 但是当我拖入里面的时候,touchDown动作也被触发了。 如何在dragInside时禁用touchDown事件。 谢谢!
– (IBAction)SignUp:(id)sender; { Expected identifier or '(' IBOutlet UITextField *Firstnamefield; IBOutlet UITextField *Lastnamefield; IBOutlet UITextField *emailfield; IBOutlet UITextField *agefield; IBOutlet UITextField *passwordfield: IBOutlet UITextField *reenterpasswordfield; }
我有一个button的login页面。 当我点击它,IF和ONLY如果login成功,我想传递数据到另一个类(使用属性)。 我曾尝试在button上使用Segue来传递数据,但问题是这个Segue总是进入下一个View,即使login失败,在这种情况下,它也不应该。 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"gotoMainPage"] ) { MainPageController *mpc = [segue destinationViewController]; mpc.username = @"TEST"; } 如果login成功,我怎么才能让Segue只进入destinationController? 我知道还有其他方法去另一个ViewController,如设置一个IBAction的button,当login成功,使用instantiateViewControllerWithIdentifier和presentViewController,我也试过这些,但这里的问题是,它不会将数据传递给另一个类。 帮助表示赞赏。 谢谢
我有多个button,如果用户触摸2个或更多button并同时发布,我想给一个button的动作。 我怎样才能做到这一点。 在此先感谢您的帮助..
我将button命名为“提醒” 显然,它应该链接到文件,但没有任何显示在我的。 我在故事板中创build了一个button,但是我不知道如何将它链接到.m或.h文件。 我真的很新,还在学习。 我是否应该更改button的设置,以及在文件中写入什么代码以使其工作? 谢谢一堆!