如何在 UITableView上添加 自定义按钮

如何在 UITableView上添加 自定义按钮,第1张

很简单啊。。在点击+或者-按钮的时候设置tableview的editing为yes啊,记住点击的按钮是那个啊,可以设个bool或者其他的来记住都行,然后重写

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath根据你记住的按钮返回相应的类型啊。UITableViewCellEditingStyleDelete或者UITableViewCellEditingStyleInsert。

在项目需求中,经常会有对 TableView Cell 左滑事件及按钮的自定义设置需求

在iOS 11.0之前,我们可以看到 Cell 的左滑界面 UITableViewCellDeleteConfirmationView 布局是在于 Cell 之中的,并且只有左滑事件之后才会添加到 Cell 中,在左滑界面中存在一个 UIButton 的子视图,这便是我们需要自定义的视图

在 tableView 的 delegate 方法中自带有 - (NSArray *)tableView:(UITableView*)tableView editActionsForRowAtIndexPath:(NSIndexPath*)indexPath 可自定义事件

至此iOS 11.0之前的版本的左滑自定义便已经可以了(当然,也可以自定义左滑时多个事件,原理也是一样的)

在iOS 11.0之后的版本,左滑布局发生了改变

iOS 11.0之后的当然能用之前的方法了,而苹果在11.0之后其实也新增了另外一个新的方法 - (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath ,只在iOS 11.0之后的系统才有效,其实目前区别上也仅仅是action多了一个image属性,然而此image属性也不能显示原图,而是会被自动渲染。

GItHubDemo

IOS开发UI篇—导航控制器属性和基本使用

一、导航控制器的一些属性和基本使用

1.把子控制器添加到导航控制器中的四种方法

(1)

1.创建一个导航控制器

UINavigationController *nav=[[UINavigationControlleralloc]init]

2.设置导航控制器为window的根视图

self.window.rootViewController=nav

3.添加

YYOneViewController *one = [[YYOneViewController alloc] init]

[nav pushViewController:one animated:YES]

(2)

1.创建一个导航控制器

UINavigationController *nav=[[UINavigationControlleralloc]init]

2.设置导航控制器为window的根视图

self.window.rootViewController=nav

3.添加

YYOneViewController *one = [[YYOneViewController alloc] init]

[nav addChildViewController:one]

(3)

1.创建一个导航控制器

UINavigationController *nav=[[UINavigationControlleralloc]init]

2.设置导航控制器为window的根视图

self.window.rootViewController=nav

3.添加

YYOneViewController *one = [[YYOneViewController alloc] init]

nav.viewControllers=@[one](添加到导航控制器的栈中)

说明:nav.viewControllers== nav.childViewControllers注意该属性是只读的,因此不能像下面这样写。nav.childViewControllers = @[one]

(4)最常用的方法

YYOneViewController *one=[[YYOneViewController alloc]init]

UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:one]

2.当前子控制器界面导航栏的标题以及对应返回标题的设置

self.navigationItem.title=@"第一个界面"

self.navigationItem.backBarButtonItem=[[UIBarButtonItemalloc]initWithTitle:@"返回一"style:UIBarButtonItemStylePlain target:nilaction:nil]

3.给导航栏添加按钮

说明:可添加一个,也可以添加多个(数组)

添加导航栏左边的按钮(添加一个相机图标的按钮),会盖掉返回

  self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:nil action:nil]

4.界面跳转

跳转到第二个界面(当前为第三个,移除当前栈顶的控制器) [self.navigationControllerpopViewControllerAnimated:YES]

移除处理栈底控制器之外的所有控制器 [self.navigationControllerpopToRootViewControllerAnimated:YES]

只要传入栈中的某一个控制器,就会跳转到指定控制器 [self.navigationController popToViewController:<#(UIViewController *)#>animated:<#(BOOL)#>]

二、代码示例

YYAppDelegate.m文件

1 //

2 // YYAppDelegate.m

3 // 01-导航控制器的使用1

4 //

5 // Created by apple on 14-6-4.

6 // Copyright (c) 2014年 itcase. All rights reserved.

7 //

8

9 #import "YYAppDelegate.h"

10 #import "YYOneViewController.h"

11

12 @implementation YYAppDelegate

13

14 //应用程序启动完毕即会调用

15 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

16 {

17 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]

18 self.window.backgroundColor = [UIColor whiteColor]

19

20

21 //3.添加子控制器到导航控制器中

22 //第一种也是最常用的一种

23 //YYOneViewController *one=[[YYOneViewController alloc]init]

24 //UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:one]

25

26 //1.创建一个导航控制器

27 UINavigationController *nav=[[UINavigationController alloc]init]

28 //2.设置导航控制器为window的根视图

29 self.window.rootViewController=nav

30

31 //第二种

32 YYOneViewController *one = [[YYOneViewController alloc] init]

33 [nav pushViewController:one animated:YES]

34

35 //第三种

36 //[nav addChildViewController:one]

37 //第四种(添加到导航控制器的栈中)

38 //nav.viewControllers=@[one]

39

40 // 导航控制器的栈

41 //nav.viewControllers== nav.childViewControllers

42 // 注意该属性是只读的,因此不能像下面这样写

43 //nav.childViewControllers = @[one]

44

45

46 [self.window makeKeyAndVisible]

47 return YES

48 }

49

50 @end


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11621827.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存