Tag: 代表

一个Objective-C对象可以作为它自己的代表吗? 这是不错的编程习惯?

我知道这是可能的,但这真的是一个很好的编程习惯吗? 这个想法是UIAlertView子类,并订阅自己作为我自己的委托,以便能够添加button和块处理程序。 这样,当我得到alertView:clickedButtonAtIndex:我调用传递的块。 我希望这是可以理解的。 这是一个很好的编程习惯吗? 更新:这是我的问题,我问的问题https://github.com/ianmurrays/IMAlertView 。 任何意见将不胜感激。

didOutputSampleBuffer委托没有被调用

我的代码中didOutputSampleBuffer函数没有被调用。 我不知道为什么发生。 代码如下: import UIKit import AVFoundation import Accelerate class ViewController: UIViewController { var captureSession: AVCaptureSession? var dataOutput: AVCaptureVideoDataOutput? var customPreviewLayer: AVCaptureVideoPreviewLayer? @IBOutlet weak var camView: UIView! override func viewWillAppear(animated: Bool) { super.viewDidAppear(animated) captureSession?.startRunning() //setupCameraSession() } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //captureSession?.startRunning() […]

令人沮丧的UIWebView委托崩溃问题

我创build了一个运行完美的ARC应用程序。 它有一个UINavigationController,我用来通过视图,一切运行良好。 我将应用程序转换为iPad,并决定将其中一个视图显示为popup窗口。 (我不喜欢UIPopoverController,所以我创build了我自己的基本popup窗口)。 它被添加到视图如下 MyViewController *hotelinf = [[MyViewController alloc] initWithNibName:@"MyViewController_iPad" bundle:nil]; [self.view addSubview:hotelinf.view]; 该视图被添加为子视图罚款。 我添加的视图包含一个UIWebView,它具有通常的委托方法,但是当视图试图访问其中一个委托时,它就会崩溃。 *** -[MyViewController respondsToSelector:]: message sent to deallocated instance 0x7917b90 具体来说,它在这条线上崩溃.. [self.webView loadHTMLString:stringResponse baseURL:nil]; 我已经显示视图(和UINavigationControllers)作为子视图多次没有任何问题,虽然他们都没有包括一个UIWebView委托。 我猜我必须设置我的UIViewController istance的委托,但我不知道如何。 还值得注意的是,如果我在现有的UINavigationController中推送视图,它会调用并加载HTML罚款,这肯定意味着它与视图本身的代码无关。 任何帮助将不胜感激! 这里是代码(除了上面显示的控制器).. 。H @interface MyViewController : UIViewController <UIWebViewDelegate, UIActionSheetDelegate> { //Unrelated IBOutlets } @property (nonatomic, strong) UIWebView *webView; @end .M @implementation MyViewController […]

试图实现委托inheritance

我有一个叫做ToolbarView的类,它是UIView的一个子类,基本上创build了一个消失/重新出现的UIToolbar的UIView。 我也有ToolbarView的子类DraggableToolbarView使用户能够拖动屏幕周围的视图。 我需要为ToolbarView创build一个委托,以便在工具栏重新出现和消失时通知另一个对象/类。 我还需要为DraggableToolbarView创build一个委托,以便在拖动视图时通知另一个对象/类。 DraggableToolbarViews委托也将需要通知另一个对象/类的工具栏重新出现和消失。 所以我决定实现ToolbarViewDelegate,并从中inheritanceDraggableToolbarViewDelegate,并拥有如下的方法: ToolbarView.h #import <UIKit/UIKit.h> @protocol ToolbarViewDelegate; @interface ToolbarView : UIView <UIGestureRecognizerDelegate> { id <ToolbarViewDelegate> _toolbarViewDelegate; } @property(nonatomic, assign) id <ToolbarViewDelegate> toolbarViewDelegate; @end ToolbarView.m #import "ToolbarView.h" #import "ToolbarViewDelegate.h" … – (void) showBars { … if (self.toolbarViewDelegate) { [self.toolbarViewDelegate toolbarViewWillShowToolbar:self]; } … } – (void) hideBars { … if (self.toolbarViewDelegate) { [self.toolbarViewDelegate […]

在Swift中重载一个超类委托

我正在做一个包含两个UIViews的Swift(v1.2)项目。 MyView和MyViewSubclass 。 MyView有一个代理 ,我想在MyViewSubclass中重写成一个子协议,类似于UITableViews有一个UITableViewDelegate也符合超级UIScrollViewDelegate 。 我的第一个想法是重写超类属性,但这会导致编译器错误 ,因为子类不能重写具有不同types的超类属性。 // Example throws a compiler error. Can't override property with different type class MyView : UIView { weak var delegate : MyViewDelegate? } class MyViewSubclass : MyView { override weak var delegate : MyViewSubclassDelegate? // Compiler error } protocol MyViewDelegate { func someFunc () } protocol MyViewSubclassDelegate […]

在UITableView中处理UIButton Photo Grid的最有效方法是什么?

我有一个iOS应用程序正在从一个JSON请求从一个MySQL数据库抓取一堆照片URL。 一旦我有这些照片和相关信息,我用它来填充UITableView的数据源。 我想创build一个UIButtons网格,由照片制成,每行4个。 这个当前的代码工作,但它非常慢,我的电话/模拟器冻结了,当我滚动表。 只有几行的表格可以正常工作,但是一旦达到10行或更多行,它就会慢慢下降,并且接近崩溃。 我是iOS和Objective-C的新手,所以我认为在代码中效率低下。 有什么build议么? 谢谢!! – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; static NSString *CompViewCellIdentifier = @"CompViewCellIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CompViewCellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CompViewCellIdentifier] autorelease]; } // The photo number in the photos array that we'll need […]

在运行时实现委托?

我有一个通用的视图控制器类,我的应用程序中的所有视图控制器类inheritance其中有以下loadView方法: – (void) loadView { if (viewType == UIStandardViewControllerViewTypeUIView) { UIView *view = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]]; [self setView: view]; [view release]; } else if (viewType == UIStandardViewControllerViewTypeUIScrollView) { UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]]; [self setView: scrollView]; [scrollView release]; } else if (viewType == UIStandardViewControllerViewTypeUITableViewPlain || viewType == UIStandardViewControllerViewTypeUITableViewGrouped) […]

多播委托 – 从iOS中的UI控件接收通知的多个类

我知道UI控件(如UITextField)通过委托来通知客户端交互/事件,它被定义为支持所需协议的类。 我经常发现自己想要在多个类中接收UI事件的通知,所以想要支持多播。 例如,为UI控件指定多个委托。 我很确定,没有支持这个的iOS框架function。 我想知道是否有人提出了一个体面的解决这个问题?

我怎样才能得到UITextFieldDelegate.shouldChangeCharactersInRange与自定义inputView触发?

我有一个自定义的键盘,我用它来编辑mytextField的文本,它的效果很好。 但是,我永远不能得到shouldChangeCharactersInRange委托执行使用我的自定义键盘。 它执行时,我使用我的实际键盘(显然不是默认的iPhone键盘,因为我设置mytextField.inputView = numberPad.view)。 我该怎么做才能使用自定义键盘来触发shouldChangeCharactersInRange委托? 顺便说一句,自定义键盘只是一堆button。 – (void) numberPadPressed: (UIButton *)sender { [mytextField insertText:[[NSNumber numberWithInt:sender.tag] stringValue]]; } – (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string]; NSLog(@"shouldChangeCharactersInRange: %@", resultingString); return true; } – (void)viewDidLoad { mytextField.text = @""; mytextField.inputView = numberPad.view; mytextField.delegate = self; [mytextField becomeFirstResponder]; }

为什么我们设置委托为零dealloc如果对象将被销毁呢?

-(void) scrollViewDidScroll:(UIScrollView *)scrollView { PO(NSStringFromCGPoint(self.tableView.contentOffset)); PO(NSStringFromUIEdgeInsets(self.tableView.contentInset)); while(false); } -(void)dealloc { PO(NSStringFromClass([self class])); PO(@"Deallocated"); self.tableView.delegate=nil; } 在这里,我需要设置self.tableView.delegate =零,以避免错误。 我知道,从我以前的问题,self.tableView.delegate不会自动成为n当委托被销毁。 这是因为委托types是分配引用而不是弱引用。 但是,self.tableView呢? 唯一强烈引用self.tableView的是superview,它拥有self和selfsef。 所以当self被销毁的时候,self.tableView也应该被销毁,这意味着self.tableView.delegate也会被删除。 那么为什么我需要设置self.tableView.delegate=nil ;