2013斯坦福大学iOS应用开发学习笔记 11 Table View and iPad
2015-05-30 10:17
701 查看
主要学习了关于 protocol 和 delegate 的知识,还不是特别懂,没有搞清楚其中的关系,但是希望慢慢能理清楚吧
关于protocol
在.h文件中:
@interface ImageViewController :UIViewController
在.m文件中:
@interfaceImageViewController () <UIScrollViewDelegate,UISplitViewControllerDelegate>
这行代码声明,ImageViewController采用了UIScrollViewDelegate协议。
并且在.m文件中重写了方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
于是,ImageViewController有资格,可以作为_scrollView的delegate来帮它完成ScrollView的动作
关于delegate
@property (weak,
nonatomic) IBOutletUIScrollView *scrollView;
并且在setScrollView方法中有
_scrollView.delegate =self;
于是,属性scrollView使用delegate完成缩放动作
关于代码设计:
MCV设计方式
代码中创建的对象有
Model
@interfaceFlickrPhotosTVC
:UITableViewController
@interface JustPostedFlickrPhotosTVC :FlickrPhotosTVC
@interface ImageViewController :UIViewController
在FlickrPhotosTVC中,完成的方法有:
关于UITableViewDataSource的方法:
numberOfSectionsInTableView,numberOfRowsInSection,cellForRowAtIndexPath
NSIndexPath用来主要用 来标识当前cell的在tableView中的位置,该类别有section和row两个属性,前者标识当前cell处于第几个section中,后者代
表在该section中的第几行。
cellIdentifier识别@“Flickr Photo Cell”
关于Navigation的方法:prepareImageController和prepareForSegue
prepareImageController实现prepare the given ImageViewController to show the given photo
prepareForSegue是实现get the new view controller and the identifier of segue is @"Display Photo"
在JustPostedFlickrPhotosTVC中,具体从Flickr里面fetch照片
在ImageViewController中,主要是segue出来的scrollView界面,并且执行FlickrFetcher,从而得到photo
《iOS编程之美》里就有对delegate的五部曲总结:
1. 委托者声明一个delegate
2. 委托者调用protocol内的方法
3. 关联委托者和被委托者
4. 被委托者遵循delegate协议
5. 被委托者重写protocol内的方法
其以SceneB向SceneA传值,利用delegate实现页面之间的数据传递
委托者:SceneB 被委托者:SceneA
@protocol sceneBVCDelegate <NSObject>
- (void) method
@end
1. 声明一个property为 id<protocol> delegate
2. [self.delegate sceneBViewController:self didInputed: self.inputInformation.text];
将UITextLabel的内容通过protocol内的方法传递给被委托者,即SceneA
3. 利用segue的正向传值
因此在prepareForSegue中,SceneB.delegate = self //prepareForSegue是在SceneAViewControl.m文件中,即为SceneB.delegate = SceneA的意思
4. 被委托者遵循delegate协议protocol
因此@interface SceneAViewController: UIViewController <sceneBVCDelegate>
5. 被委托者重写method
self.UILabel.text = sceneBVC传入的string
结合官方给出protocol的UIScrollViewDelegate
委托者为ScrollView,被委托者为ImageView
1. 声明一个delegate属性,_scrollView是实例变量,类型为UIScrollView,因此可以说明,内部已经有delegate属性
2. method怎么调用???不是很清楚!!!
3. 在setScrollView中设置delegate为self(ImageView)
4. 被委托者遵循<UIScrollViewDelegate>
5. ImageViewController是被委托者,因此在.m文件中重写zoom方法
在AB传递数据中,还用到了TextLabel
1. 内部有类型为id<UITextFieldDelegate>
的delegate;
2. 键盘点击Return之后,会调用方法textFieldShouldReturn: 怎么调用的???不晓得!!!
3. 在storyborad中建立委托和被委托的关系,被委托者为SceneB
4. 被委托者SceneB声明的时候,加入<UITextFieldDelegate>
5.SceneB的.m文件应该重写方法textFieldShouldReturn:
关于protocol
在.h文件中:
@interface ImageViewController :UIViewController
在.m文件中:
@interfaceImageViewController () <UIScrollViewDelegate,UISplitViewControllerDelegate>
这行代码声明,ImageViewController采用了UIScrollViewDelegate协议。
并且在.m文件中重写了方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
于是,ImageViewController有资格,可以作为_scrollView的delegate来帮它完成ScrollView的动作
关于delegate
@property (weak,
nonatomic) IBOutletUIScrollView *scrollView;
并且在setScrollView方法中有
_scrollView.delegate =self;
于是,属性scrollView使用delegate完成缩放动作
关于代码设计:
MCV设计方式
代码中创建的对象有
Model
@interfaceFlickrPhotosTVC
:UITableViewController
@interface JustPostedFlickrPhotosTVC :FlickrPhotosTVC
@interface ImageViewController :UIViewController
在FlickrPhotosTVC中,完成的方法有:
关于UITableViewDataSource的方法:
numberOfSectionsInTableView,numberOfRowsInSection,cellForRowAtIndexPath
NSIndexPath用来主要用 来标识当前cell的在tableView中的位置,该类别有section和row两个属性,前者标识当前cell处于第几个section中,后者代
表在该section中的第几行。
cellIdentifier识别@“Flickr Photo Cell”
关于Navigation的方法:prepareImageController和prepareForSegue
prepareImageController实现prepare the given ImageViewController to show the given photo
prepareForSegue是实现get the new view controller and the identifier of segue is @"Display Photo"
在JustPostedFlickrPhotosTVC中,具体从Flickr里面fetch照片
在ImageViewController中,主要是segue出来的scrollView界面,并且执行FlickrFetcher,从而得到photo
《iOS编程之美》里就有对delegate的五部曲总结:
1. 委托者声明一个delegate
2. 委托者调用protocol内的方法
3. 关联委托者和被委托者
4. 被委托者遵循delegate协议
5. 被委托者重写protocol内的方法
其以SceneB向SceneA传值,利用delegate实现页面之间的数据传递
委托者:SceneB 被委托者:SceneA
@protocol sceneBVCDelegate <NSObject>
- (void) method
@end
1. 声明一个property为 id<protocol> delegate
2. [self.delegate sceneBViewController:self didInputed: self.inputInformation.text];
将UITextLabel的内容通过protocol内的方法传递给被委托者,即SceneA
3. 利用segue的正向传值
因此在prepareForSegue中,SceneB.delegate = self //prepareForSegue是在SceneAViewControl.m文件中,即为SceneB.delegate = SceneA的意思
4. 被委托者遵循delegate协议protocol
因此@interface SceneAViewController: UIViewController <sceneBVCDelegate>
5. 被委托者重写method
self.UILabel.text = sceneBVC传入的string
结合官方给出protocol的UIScrollViewDelegate
委托者为ScrollView,被委托者为ImageView
1. 声明一个delegate属性,_scrollView是实例变量,类型为UIScrollView,因此可以说明,内部已经有delegate属性
2. method怎么调用???不是很清楚!!!
3. 在setScrollView中设置delegate为self(ImageView)
4. 被委托者遵循<UIScrollViewDelegate>
5. ImageViewController是被委托者,因此在.m文件中重写zoom方法
在AB传递数据中,还用到了TextLabel
1. 内部有类型为id<UITextFieldDelegate>
的delegate;
2. 键盘点击Return之后,会调用方法textFieldShouldReturn: 怎么调用的???不晓得!!!
3. 在storyborad中建立委托和被委托的关系,被委托者为SceneB
4. 被委托者SceneB声明的时候,加入<UITextFieldDelegate>
5.SceneB的.m文件应该重写方法textFieldShouldReturn:
相关文章推荐
- iOS之推送通知-本地-服务器3.服务器端实现: 如果要编写内容提供者的推送服务程序,需要进行SSL认证编程,以及构建APNS数据包,数据包分为3个主要部分:Command(命令)、deviceTo
- 修改iOS应用名称
- iOS ZBarSDK 用ZBarReaderView自定义二维码扫描界面
- IOS开发之页面间传值的几种小方法
- iOS中nil/Nil/NULL的区别以及[NSNull null]
- 使用xcrun打包iOS应用
- iOS图片拉伸技巧
- IOS CoreText --- 代码封装
- iOS音效和音乐播放
- 如何修改IOS7 Navigation Bar上的返回按钮文本颜色
- iOS中的事件
- ios开发- 利用运行时(runtime)字典转模型
- termios结构体说明
- 【金阳光测试】KK公益讲座第63期-5月30号(周六晚八点) 分享主题: IOS专项测试基础
- iOS中Git的使用
- iOS学习之----------自定义工具条
- iPhone:iOS界面,本地生成随机验证码
- AsyncSocket的用法
- 新手入门iOS,浅谈学习经验
- IOS 点击空白处隐藏键盘的几种方法