iOS开发之点击tableViewCell,显示详情

介绍一种在storyboard上拖控件创建segue的方法。

// 首先去翻译了下Segue

// 来源:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/UsingSegues.html

// 定义:Segue表示storyboard文件中两个ViewController之间的转换(?)。通常由A视图控制器的按钮、表格行或手势指向B视图控制器。

// 触发:由UIKit实现,可使用notifications在A、B间传输数据。segue被触发后工作流程如下

提供shouldPerformSegueWithIdentifier:sender:方法中止跳转所需的步骤,如不新建segue和B;

提供prepareForSegue:sender:方法传输数据。

// 类型:原表如下,几个segue的区别是:show是把B堆在A上,detail用B替换A,Modally用模版显示B,Popover用B作弹窗。

Table 9-1Adaptive segue types

Segue type


Behavior


Show (Push)


This segue displays the new content using the showViewController:sender: method of the target view controller. For most view controllers, this segue presents the new content modally over the source view controller. Some view controllers specifically override the method and use it to implement different behaviors. For example, a navigation controller pushes the new view controller onto its navigation stack.

UIKit uses the targetViewControllerForAction:sender:method to locate the source view controller.


Show Detail (Replace)


This segue displays the new content using the showDetailViewController:sender: method of the target view controller. This segue is relevant only for view controllers embedded inside a UISplitViewController object. With this segue, a split view controller replaces its second child view controller (the detail controller) with the new content. Most other view controllers present the new content modally.

UIKit uses the targetViewControllerForAction:sender:method to locate the source view controller.


Present Modally


This segue displays the view controller modally using the specified presentation and transition styles. The view controller that defines the appropriate presentation context handles the actual presentation.


Present as Popover


In a horizontally regular environment, the view controller appears in a popover. In a horizontally compact environment, the view controller is displayed using a full-screen modal presentation.

// 步骤

1. 选中cell,关联cell与B,segue类型选择selection show (detail)

2. 在A对应的Controller中覆盖prepareForSegue方法

class AController: UIViewController, UITableViewDataSource,UITableViewDelegate {

// ...

// 目前只有一个segue,所以没有判断viewControllerId,产生错误再学怎么区分

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

let index : Int = (self.table.indexPathForSelectedRow?.row)!

let data:VideoSummary = videoSummaries[index]

let view : BController = segue.destinationViewController as! VideoViewController

view.selectedVideo = data

}

}

3. 在B对应的Controller中添加selectedVideo属性

class BController: UIViewController , UITableViewDataSource,UITableViewDelegate {

var selectedVideo : VideoSummary! // 注意感叹号

//...

}

// 成功。

时间: 06-15

iOS开发之点击tableViewCell,显示详情的相关文章

iOS 开发之 点击tabbarItem添加是否跳转登录页面判断

iOS 开发之 点击tabbarItem添加是否跳转登录页面判断 项目里面在点击tabbarItem的时候需要判断是否是登录状态,如果未登录直接跳转登录页面,如果已登录则直接进入. 首先设置UITabBarController的代理为appdelegate如下:myTabBar.delegate = self; 然后在interface后面写上代理<UITabBarControllerDelegate> 实现代理里面的- (BOOL)tabBarController:(UITabBarCont

IOS开发之解决重用TableViewCell导致的界面错乱的问题

无论是初学者,又或者是老鸟,只要是学习IOS的人都知道,TableView对于开发有多重要,然后我们在使用TableView,可能会遇到各种各样的问题,例如今天我想要说的 TableViewCell的重用的问题: 我们都知道,在TableView返回每一行cell的数据源方法中,我们一般会通过重用cell来达到节省内存的目的:通过为每个cell指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,当cell滚出屏幕时,会将滚出屏幕的单元格放入重用的缓存池中,当某个未在屏幕上

iOS开发之应用首次启动显示用户引导

这个功能的重点就是在如何判断应用是第一次启动的. 其实很简单 我们只需要在一个类里面写好用户引导页面  基本上都是使用UIScrollView 来实现, 新建一个继承于UIViewController的类 命名为 UserGuideViewController , 在UserGuideViewController.m 写 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 // Do any additional setup after load

IOS开发中UILabel自适应大小显示的方法

1,根据label中的文字内容自动换行显示的方法 1>,认识两个属性 @property(nonatomic) NSInteger numberOfLines; @property(nonatomic) NSLineBreakMode lineBreakMode; 其中NSLineBreakMode为枚举类型 typedef NS_ENUM(NSInteger, NSLineBreakMode) { /* What to do with long lines */ NSLineBreakByWo

iOS开发笔记--cell最右边显示箭头,字符,自定义分割线

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; if (0 == i

iOS开发--用户点击频繁,多个异步网络请求取消问题?

一.业务环境描述 当一个view同时添加两个tableView为subView的时候,两个tableView分别为mainTable和subTable. 当用户点击mainTable上的某一条数据时,再去发送网络请求subTable中的数据. 存在问题的地方:例如当用户在mainTable上频繁点击各条cell上面的数据时,会出现subTable中数据错乱问题.那么如何取消之前的网络请求呢??? 注:网络请求为异步请求 二.解决方法 1.实例化一个AFHTTPRequestOperationMa

ios开发之--系统控件显示中文

虽然一直知道X-code肯定提供有语言本地化的设置地方,但是一直也做个记录,有些时候的汉化,还是需要使用代码去控制,键盘的右下角.navagiton的return使用代码修改,调用系统相机时,也是出现英文的提示与按钮,这次没办法通过代码修改了,只能进行本地汉化的操作了,很简单的,添加个bool类型的值就行了,如下: 只需要在"info.plist",添加一项"Localized resources can be mixed",值设置为"YES"即

iOS开发-- 设置UIButton的文字显示位置、字体的大小、字体的颜色

btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlStateNormal]; //设置按钮上的自体的大小 //[btn setFont: [UIFont systemFontSize: 14.0]];    //这种可以用来设置字体的大小,但是可能会在将来的SDK版本中去除改方法 //应该使用 btn.titleLabel.font = [UIFont sys

IOS开发----加载地图之后显示为网格,不显示地图

加载地图之后,出现网格,经纬度已经加上了,但并没有地图显示.这时候要设置info.plist文件,右键,open AS------source code 在里面加上如下代码: <key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict><key>NSLocationWhenInUseUsageDesc