Tag: 代表

两个视图控制器之间的ios传递数据没有segue?

我想从一个视图控制器传递数据到另一个视图控制器那些没有连接到彼此与segue.in firstviewcontroller当button触摸(最喜欢)想要数据传递给属于tabbarviewcontroller一部分的secondviewcontroller(favoriteviewcontroller)。 我知道最好的解决scheme也许使用委托? 但我该怎么做呢?

代表发送到错误的类

我subclassed我的导航栏,使标题视图可点击。 点击后,会显示另一个视图控制器。 我正在导航栏中创build一个协议,这将告诉导航控制器标题视图已被点击。 以下是我的导航栏的定义: NavigationBar.h: @protocol NavigationBarDelegate; @interface NavigationBar : UINavigationBar { id <NavigationBarDelegate> delegate; BOOL _titleClicked; } @property (nonatomic, assign) id <NavigationBarDelegate> delegate; @end @protocol NavigationBarDelegate @optional – (void)titleButtonClicked:(BOOL)titleClicked; @end 委托实现一个可选的方法。 .m文件如下所示: NavigationBar.m: @implementation NavigationBar – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { _titleClicked = 0; } return self; } – (void)drawRect:(CGRect)rect […]

自定义setter方法的委托被称为无限次

在我的VC我已经声明了一个自定义的委托属性: @interface VC2 : BaseVC @property (nonatomic,weak) id<VC2Delegate> delegate; @end 并从VC1,我设置这个代表: – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if ([[segue identifier] isEqualToString: @"VC2"]) { self.VC2 = [segue destinationViewController]; [self.VC2 setDelegate:self]; } } 在我的VC2中,我为代表写了一个setter方法: -(void)setDelegate:(id)del{ self.delegate=del; } 这个问题,在VC1中的pprepareForSegue方法调用之后,VC2中委托的setter方法被调用了很多次,我的应用程序崩溃了。 我不确定可能是什么原因。 这里是satcktrace: 我没有任何实现我的BaseVC。 这只是一个普通的VC。

设置代表崩溃

我有一个自定义视图(settingview)与笔尖和协议。 我想用delegate在viewcontoller上添加这个视图。 当我设置它的委托我的应用程序崩溃,我不知道我做错了什么。 我没有用于ViewController的NIB。 我附上我的代码和视图的NIB的几个图像。 。H @protocol SettingViewDelegate @required -(void)CornerSlider:(id)sender; -(void)MarginSlider:(id)sender; -(void)BorderSlider:(id)sender; -(void)ShadowSlider:(id)sender; -(void)BorderColor:(id)sender; -(void)ShadowColor:(id)sender; -(void)remove:(id)sender; @end @interface SettingView : UIView @property (nonatomic, assign) id delegate; -(IBAction)CornerSlider1:(id)sender; -(IBAction)MarginSlider1:(id)sender; -(IBAction)BorderSlider1:(id)sender; -(IBAction)ShadowSlider1:(id)sender; -(IBAction)BorderColor1:(id)sender; -(IBAction)ShadowColor1:(id)sender; -(IBAction)remove1:(id)sender; @end .M @implementation SettingView – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self = [[[NSBundle mainBundle] loadNibNamed: @"Setting" owner: self […]

如何符合Swift中现有的.h文件中的目标c协议?

我正在尝试在Swift中重新创build一个Ray Wenderlich教程,但是同时使用Swift和Objective C。主要部分(即视图控制器和模型)在Swift中完成,并且使用桥接头来处理现有的.h和.m类。 我有麻烦试图让我的SWIFT视图控制器符合obj-c委托。 在我的.h文件中我有: @class RWTRateView; @protocol RWTRateViewDelegate – (void)rateView:(RWTRateView *)rateView ratingDidChange:(float)rating; @end @interface RWTRateView : UIView … @property (assign) id <RWTRateViewDelegate> delegate; @end 在我的swift文件中,我有: class DetailViewController: UIViewController, UITextFieldDelegate, RWTRateViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet var rateView : RWTRateView … func configureView() { // Update the user interface for the detail item. if let detail:RWTScaryBugDoc […]

方法委托不会被调用

我试图实现这一点: UICRouteOverlayMapView .h file @protocol DrawingDataDelegate <NSObject> @required -(void) drawingSuccessful:(BOOL)done; @end @interface UICRouteOverlayMapView : UIView { id <DrawingDataDelegate> delegate; } – (id)initWithMapView:(MKMapView *)mapView; @property (nonatomic, retain) id <DrawingDataDelegate> delegate; @end .m file @implementation UICRouteOverlayMapView @synthesize delegate; – (void)drawRect:(CGRect)rect { NSLog(@"mesagge"); if ([self.delegate respondsToSelector:@selector(drawingSuccessful:)]) { [self.delegate drawingSuccessful:YES]; } } 采用协议的类: .h file #import "UICRouteOverlayMapView.h" @class UICRouteOverlayMapView; […]

代表没有设置

我在Swift中构build了一个使用Objective-C中编写的GCDAsyncSocket的框架。 我收到的错误是: Couldn't start socket: Error Domain=GCDAsyncSocketErrorDomain Code=1 "Attempting to accept without a delegate. Set a delegate first." UserInfo=0x61000026b940 {NSLocalizedDescription=Attempting to accept without a delegate. Set a delegate first.} 我已经尝试在init方法(如下所示)中设置委托,并尝试在初始化后使用setDelegate方法进行设置。 在debugging的时候,我已经validation了setDelegate代码正在被调用,并且传入的值( self )实际上包含了一个引用。 更新:当我修改GCDAsyncSocket.m从代理的声明中删除__weak关键字,它的工作,但我仍然不明白为什么我应该这样做。 该行是: __weak id delegate ,更改为id delegate 这是导致问题的类: class Server: GCDAsyncSocketDelegate { let boundHost:String? let port:UInt16 var socket:GCDAsyncSocket? init(boundHost: String?, port: UInt16) […]

将数据传递给AppDelegate

我想知道如何将数据传回给AppDelegate。 假设我有这个计划 AppDelegate – > RootViewController -> FirstViewController -> SecondViewController. SecondViewController具有调用AppDelegate applicationWillTerminate方法时应保存的数据。 我知道我可以使用单例在应用程序中共享数据,但我不喜欢这种方法。 通知似乎不会在这种情况下工作。 你能推荐我什么?

代表里面的Obj-C代表

我已经subclassed视图,我使用的标题视图它有一些button委托里面,它的作品完美。 不过,我在我的viewController上面提出了一个modalViewController。 (在我的modalViewController中,我已经实现了相同的头文件,并且它从头文件中获取委托),但是如果按下了头文件的后退button,它必须委托给前一个viewController。 我做了相同的function,但我的viewController从来没有得到它的代表… :(我是相当新的Obj-C,我不知道也许我在这里做一些非法的事情。 这里是modalViewController试图委托给以前的viewController的代码 #pragma mark – header delegate – (void)header:(header *)header backbuttonPressed:(UIButton *)sender { if(header == logo) { NSLog(@"gotBackButtonDelegate"); //delete the items array //_itemSourceArray = nil; [delegate allEventsDrillPage:self backbuttonPressed:sender]; [self dismissViewControllerAnimated:YES completion:nil]; } } 这个委托从页眉视图触发。 不过在我以前的viewController中: – (void)allEventsDrillPage:(allEventsDrillPage *)allEventsDrillPage backbuttonPressed:(UIButton *)sender //doesn't work 🙁 { NSLog(@"got back delegate!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); // [self dismissViewControllerAnimated:YES completion:nil]; […]

2 UITableView在UIViewController互相影响

我已经在这里约3个小时了,我终于把毛巾扔给你们了。 我有2 UITableView在我看来,其中之一是一个论坛董事会留下意见,什么不是,第二个UITableView是用来提人。 我遇到的问题是,即使我只想更新tableview counts中的一个,两个tableview counts受到影响。 我在viewdidload设置委托/数据源 self.mentionTableView.delegate = self; self.mentionTableView.dataSource = self; self.mentionTableView.tag = 1; self.forumTable.delegate = self; self.forumTable.dataSource = self; self.forumTable.tag = 2; 如果我真的不加载feedArray这是哪里forumTable获取其数据,提及部分完美的作品。 我想通了,如果matchedNames.count < feedArray.count一切工作正常,但如果matchedNames.count > feedArray.count它崩溃,这是我得到的错误 -[__NSCFArray objectAtIndex:]: index (1) beyond bounds (1) 这意味着我只有1个项目feedArray和matchedNames有不止一个。 代替 – (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 我已经使用这些代码来试图使它工作,甚至没有任何事情,甚至做了他们的组合。 1) if ([tableView isEqual: mentionTableView]){ NSLog(@"%@",matchedNames); NSLog(@"%i",matchedNames.count); return [matchedNames […]