首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用popover选取器视图中选择的字符串数组自动刷新tableview

,可以通过以下步骤实现:

  1. 首先,创建一个popover选取器视图,并将字符串数组作为其数据源。Popover选取器视图可以使用UIKit框架中的UIPickerView类来实现。
  2. 在选择器视图的代理方法中,获取用户选择的字符串数组。可以使用UIPickerViewDelegate协议中的方法pickerView(_:didSelectRow:inComponent:)来获取选中的行和组件。
  3. 在选择器视图的代理方法中,将选中的字符串数组传递给tableview的数据源。可以使用UITableView类中的reloadData()方法来刷新tableview的数据。
  4. 在tableview的数据源方法中,根据传递的字符串数组更新tableview的数据。可以使用UITableViewDataSource协议中的方法tableView(_:numberOfRowsInSection:)tableView(_:cellForRowAt:)来更新tableview的行数和单元格内容。
  5. 最后,调用tableview的reloadData()方法来刷新tableview的显示。

这样,当用户在popover选取器视图中选择字符串数组时,tableview会自动根据选择的数组刷新显示。

以下是一个示例代码,演示如何实现上述功能:

代码语言:txt
复制
import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITableViewDataSource {
    
    var tableView: UITableView!
    var picker: UIPickerView!
    var selectedStrings: [String] = []
    
    let data = ["Option 1", "Option 2", "Option 3", "Option 4", "Option 5"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建tableview
        tableView = UITableView(frame: view.bounds, style: .plain)
        tableView.dataSource = self
        view.addSubview(tableView)
        
        // 创建picker
        picker = UIPickerView()
        picker.delegate = self
        picker.dataSource = self
        
        // 创建popover
        let popover = UIPopoverController(contentViewController: picker)
        
        // 创建按钮
        let button = UIButton(type: .system)
        button.setTitle("Show Picker", for: .normal)
        button.addTarget(self, action: #selector(showPicker), for: .touchUpInside)
        button.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
        view.addSubview(button)
        
        // 显示popover
        func showPicker() {
            popover.present(from: button.frame, in: view, permittedArrowDirections: .any, animated: true)
        }
    }
    
    // MARK: - UIPickerViewDelegate
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        // 获取选中的字符串数组
        selectedStrings = [data[row]]
        
        // 刷新tableview
        tableView.reloadData()
    }
    
    // MARK: - UIPickerViewDataSource
    
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return data.count
    }
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return data[row]
    }
    
    // MARK: - UITableViewDataSource
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return selectedStrings.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") ?? UITableViewCell(style: .default, reuseIdentifier: "Cell")
        cell.textLabel?.text = selectedStrings[indexPath.row]
        return cell
    }
}

在上述示例代码中,我们创建了一个包含tableview和popover选取器视图的视图控制器。当用户点击"Show Picker"按钮时,会显示popover选取器视图,用户选择的字符串数组会自动刷新tableview的显示。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

写给iOS小白MVVM教程(一): 从MVC到MVVM之一个典型MVC应用场景

,如有你不熟悉,可点击对应链接访问: 使用 AFNetworking 来处理网络请求; 使用 MJExtension实现JSON到数据模型自动转换; 使用 MJRefresh 实现下拉刷新与上拉加载更多效果...; 获取数据成功后,自动刷新视图;获取失败,则给出错误提示; 点击某一条数据,可跳转到博客详情页....博客详情页面: 在前一页面指定博客id; 页面加载时自动发起网络请求获取id博客详情; 获取成功后,自动刷新视图;获取失败,则给出错误提示. 博客列表页面 ? 1....获取数据成功后,自动刷新视图;获取失败,则给出错误提示; 这一部分,涉及变动较多,我就直接贴代码了.你会注意到View和数据已经交叉进行了,很乱感觉.而这也是我们想要使用MVVM重构代码重要原因之一...获取成功后,自动刷新视图;获取失败,则给出错误提示.

1.9K70
  • iOS中表视图(UITableView)使用详解

    iOSUITableView使用总结 一、初始化方法 - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style...位置信息 - (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point;   获取某个cell在tableView位置信息 - (NSIndexPath...*)indexPathForCell:(UITableViewCell *)cell;  根据一个矩形范围返回一个信息数组数组是每一行row位置信息 - (NSArray *)indexPathsForRowsInRect...  //没有动画     UITableViewRowAnimationMiddle,               UITableViewRowAnimationAutomatic = 100  // 自动选择合适动画...: 当我们调用的上面的函数时,tableView会立刻调用代理方法进行刷新,如果其中我们所做操作是删除某行,而然数据源数组我们可能并没有刷新,程序就会崩溃掉,原因是代理返回信息和我们删除后不符。

    1.4K30

    React Native之常用第三方库

    前言 React Native出来一年多了,受到各大开发人员喜爱,但是由于只是专注于View层开发,因此在很多深层次上还需要结合原生app做一定兼容,还有就是现在好多控件,如Android已是系统控件...用法: import ImagePickerManager from ‘NativeModules‘; var options = { title: ‘Select Avatar‘, // 选择标题...: { ‘Choose Photo from Facebook‘: ‘fb‘, // [按钮文字] : [当选择这个按钮时返回字符串] }, mediaType: ‘photo‘, /...react-native-keychain iOS KeyChain管理 react-native-picker滚轮选择 react-native-picker-Android Android 滚轮选择...点击弹出视图 https://github.com/jeanregisser/react-native-popover https://github.com/instea/react-native-popup-menu

    8.8K101

    iOS 二级菜单(UITableView实现)「建议收藏」

    ; 下面我说一下大体思路吧; 当选中cell时候看看这个cell有没有子菜单,如果没有很简单直接打开就行了; 如果有那么我们先将这些子菜单想办法添加到掌管父菜单数组,然后生成一个位置数组(为了在...tableview调用 insertRowsAtIndexPaths: withRowAnimation: 这个函数进行插入操作并且带有动画); 删除操作相同意思先从控制父菜单数组删除,然后同样生成位置数组调用函数删除...:(TableCell *) item;//删除视图处理函数 好了来写: 工程没有其他类了,下面就是自动建好…….Controller.h了 #import @class...* DeleteArry;//中间处理过程数组,用于删除子视图 -(NSArray *) insertOperation:(TableCell *)item;//插入视图处理函数 -(NSArray...cell个数 -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    1.2K30

    Swift - MJRefresh库使用详解1(配置,及库自带下拉刷新组件)

    除了使用 UIRefreshControl,网上也有许多第三方刷新库可供选择。MJRefresh 是其中比较优秀一个。...一、MJRefresh介绍 (1)MJRefresh 是一个使用 Objective-C 写刷新库,使用简单。 (2)MJRefresh 既可以实现下拉刷新,也能实现上拉加载。...其内容如下: #import "MJRefresh.h" 2,使用样例 下面给 tableView 添加一个下拉刷新功能,每次下拉会随机生成10条数据,并刷新表格。...//下拉刷新相关设置,使用闭包Block self.tableView!....不同状态,我们都可以设置一个图片数组,MJRefresh 就会自动播放这几张图片,形成动画。 其中下拉过程图片是根据下拉距离自动改变。

    5.8K31

    DTCoreText集成与使用目录一、相关资源二、DTCoreText集成三、DTCoreText使用四、可能遇到错误五、参考链接

    DTCoreText是可以将HTML字符串转化为富文本使用工具,既保证原生实现又能适应灵活样式修改,而且相比于使用WebView显示内容在性能上也有很大优势。本篇就这一技术使用进行总结。...为了获取到适合iOS设备使用SDK,我们选择工程Target为DTCoreText(iOS),并依次选择工程->TARGETS->DTCoreText(iOS)->Deployment Info,选择需要最低支持系统版本...image.png 4.模拟和真机分别编译 使用commadn+B执行代码编译,注意一定要选择正确Target,我们既然是用于iOS,就应该选择DTCoreText (iOS)这个Target进行编译...如果当前表视图在滑动就不执行刷新,因为滑动时候会自动调用表视图刷新方法 - (void)reloadCurrentCell{ if (self.isScrolling) {...return; } //如果当前表视图没有在滑动,就手动刷新当前在屏幕显示单元格 NSArray *indexPaths = [self.tableView indexPathsForVisibleRows

    4.9K90

    iOS开发之表视图爱上CoreData

    *整个数据存储在一个数组  *数组每一个元素是一个自动,字典key是sectionHeader值,value是该section数组形式存数据  *section每一行对应着一个数组元素...下面将要介绍才是这篇博客重点:我们如何使用CoreData才会让TableView爱上它呢?...和AppDelegate.m中进行相应配置,并且同时还自动生成一个以本应用名命名Data Model文件,我们可以在Data Model文件添加我们数据模型, 添加好数据模型我们会在生成数据实体类时使用...,我们就可在图片库中选取相应照片啦。...自己tableView,所以加载cell时要进行相应选择,searchcell是我们自定义cell, 选择代码如下: 1 //根据不同tableView来设置不同cell模板

    2.2K80

    Swift-MVVM 简单演练(一)

    ---- 添加下拉刷新控件 在基类控制定义下拉刷新控件,这样就不用每个子控制页面单独设置了 给refreshControl添加监听方法,监听refreshControlvalueChange事件...---- 上拉刷新 现在多数APP做无缝上拉刷新,就是当tableView滚动到最后一行cell时候,自动刷新加载数据。...在基类控制setupUI(设置界面)方法里面,我们直接创建了tableView,那么我们如果有一个标记,能根据这个标记来选择是创建普通视图,还是创建访客视图。就可以很好解决此类问题了。...代理合核心是解耦,当一个控件可以不停被复用时候就选择代理,比如TableViewDelegatedidSelectRowAt indexPath:该方法是可以在任何地方只要创建TableView...总结 使用代理传递消息是为了在控制视图之间解耦,让视图能够被多个控制复用,如TableView 但是,如果视图仅仅是为了封装代码,而从控制剥离出来,并且能够确认该视图不会被其它控制引用,

    10.3K51

    iOS头部渐变表格视图设计 原

    iOS头部渐变表格视图设计         今天再来给大家带来一个开发中常用到视图控制,在很多应用,可能都会遇到这样一个需求:表视图控制最上方有一个头图控件,当表格视图滑动在顶部时,导航栏透明...All rights reserved. /*  *  这个视图控制创建出带缩放头图效果视图控制  *  tip:  *      1.这个视图控制如果是被导航push出来 则内部会使用假导航进行渐隐模拟... *      2.这个视图控制如果是被present出来 则不会出现假导航栏  *      3.这个视图控制自带一个TableView 设置TableView头图不会影响原动画效果  *...   *  *  注意:设置tableView视图不能够在使用tableHeatherView方法 要使用这个属性设置  *  */ @property(nonatomic,strong)UIView... 如果不设置 会自动带一个返回按钮  *  */ @property(nonatomic,strong)NSArray * leftBarButtons; /**  *  设置导航左侧按钮数组 如果不设置

    1.2K20

    iOS开发中行高灵活可变UITableView性能优化

    ,每次刷新TableView需要执行24次heightForRwoAtIndexPath方法,如果TableView行数增加到3位数,则这个方法执行次数将会十分恐怖?。...,具体如何操作比较灵活,可以对应一个数组属性,将计算后行高放入数组,每次取行高时,检查数组是否已经有计算过行高数据,如果有直接返回。...Autolyout为前提,对于没有使用自动布局,cell高度需要手动计算场景,如果实现了这个方法,并且实现了heightForRowAtIndexPath方法,heightForRowAtIndexPath...estimatedHeightForHeaderInSection:(NSInteger)section{ return 10; } //使用自动布局给头视图添加足够布局压力 -(UIView...是一个CGFloat类型常量,其需要和用来处理返回头尾视图标题方法结合使用,用它来作为TableView分区头尾视图高度返回,系统会自动根据标题是否存在来进行自适应,举个例子,如果返回标题为nil

    2K20

    100个iOS开发设计程序员面试题汇总,你将如何作答?

    ·AppDelegate扮演着什么样角色? ·请解释一下NSUserDefaults。就你而言,你会如何在磁盘数组对象进行序列化? ·你会如何储存用户认证信息?...在Swift,什么情况下能使用NSError,什么情况下不能? ·请说明如何使用Instancetype及其重要性。 ·在Swift,什么时候该用let,什么时候该用var?...该在什么情况下使用它? ·你会选择什么工具来追踪Bug? ·如果在Cocoa中发现一个Bug,你会如何处理? ·如果应用新版本出现了Regression情况,该如何补救?...·表视图TableView)是什么?集合视图(CollectionView)又是什么? ·什么时候用“弹出(Popover)”属性最为合适? ·Split-viewController是什么?...·选取视图(PickerView)适合存放哪类内容? ·应该在什么情况下使用标签、文本域和文本视图? ·分段控件(SegmentedControl)作用是什么?

    1.4K40

    TableView优化之快速滑动下忽略加载

    ---- 3.CoreText绘制文本 首先,复杂层级关系同样会给cell在绘制时添加很大负担,这点是毋庸置疑,所以VVebo作者选择了将一些相对重复性很大视图选择使用CoreText和CoreGraphic...重要事情说三遍 放一个效果图,老司机写控制里面看不到任何一个TableView代理然而还是能正常显示并实现很多功能。...helper类 这个类只需要一个属性,是一个数组。就是你平常写TableView时候数据源。 然后在.m我们就可以像平常写TableView一样在这里面写代理了。...1.0.6 修正占位视图展示时机,提供两个刷新列表扩展方法,提供展示、隐藏占位图接口 version 1.0.7 添加选则模式下单选多选控制 version 1.0.8 补充组头视图...,添加分割线归0方法 添加自动行高计算并缓存 cell添加xib支持 修复选择模式选中后关闭再次开启选择同一个无法选中bug 更换去除选择背景方式,解决与选择模式冲突 映射所有代理 version

    1.7K33

    在iOS怎样创建可展开Table View?(下)

    ,我们必须要检查cellDescriptors数组,指定cell是否展开.某个cell是可展开,但是现在还没有展开,那么我们要标示(我们将使用一个flag标记)那个cell展开,否则我们要标示它合拢...,我们直接将选中日期设置为了一个字符串.注意,这个字符串在代理方法是一个字符串....数组里更新开关值,那样当tableView刷新时候,它就会有合适状态.在下面的代码片段里,你将会注意到我们首先确定基于开关状态合适值,然后我们分配给他们各自属性: func maritalStatusSwitchChangedState...总结 正如我开始说,创建可展开tableView在某些时候真的很有用,从麻烦当中创建新视图控制,可以用这种tableView来处理,它可以为app节省时间.在这次教程先前部分,我向你提出了一种创建可展开...tableView方法,主要特点就是在一个plist文件,所有cell描述都使用具体属性.我向你展示了当cell显示,打开或是选中时候,如何使用代码处理cell描述列表;此外,我给了你一个方法通过用户输入数据来直接更新它

    1.5K30

    Mac开发基础练习:制作一个状态栏(NSStatusBar)上App(二)

    我们在练习(一)完成了状态栏图标点击,弹出内容视图效果,但是项目看起来还有些体验不是非常符合用户习惯,(例如点击应用之外其他地方,popover 并没有自动消失)我们继续来添加和完善一些用户功能,...使得应用看起来有好一点使用体验,接下来我们为popover添加鼠标的事件监听和退出应用功能。...为了响应系统鼠标事件,我们需要使用Cocoa框架NSEvent类来为应用添加监听对象,在Mac 开发,通常我们都是被(鼠标或键盘)事件驱动,当OSX系统接收到一个事件后,会添加到窗口服务进程处理队列...运行应用,点击状态栏图标显示popover后,用鼠标点击应用窗口外其他地方,这时你会发现popover自动隐藏起来了,这样效果与之前相比,要更合适操作一些。...,或者使用tableview代替SBPopViewController,添加网络请求数据等,这样就可以由这个小练习慢慢变成自己一个小Mac 应用了,祝各位能有所收获~。

    1.4K30

    iOS中表单视图第三方控件——FXForms 原

    二、使用FXForms进行表单视图创建         FXForms框架中提供了一个FXFormViewController视图控制类,开发者可以直接编写继承于这个类ViewController...,并没有进行任何方法实现,FXForms框架实现了这样功能,如果开发者不进行节点信息配置,则FXForms会自动根据节点配置类中所有的属性来推断节点类型,如上所示,NSString类型属性会被自动推断成带文本框...这个如果设置为@YES 则会在当前界面展示表单 如果设置为@NO,则会在新视图控制展示 UIKIT_EXTERN NSString *const FXFormFieldInline; //对于数组类型节点...,可以在这个方法配置 - (NSArray *)extraFields; //这个方法需要返回一个字符串数组,如果需要某些属性不对应节点,即有属性存在,但是不生成cell,可以将属性名传入返回 -...四、关于自定义视图控制         如果开发者视图控制并不是继承于FXFormViewController,也可以使用FXForms来快捷创建表单视图,开发者自定义视图控制需要遵守FXFormControllerDelegate

    1.2K20

    Mac开发基础练习:制作一个状态栏(NSStatusBar)上App(一)

    选取项目模版 ? 项目名称 在Mac OSX系统,屏幕右上角就是我们说状态栏(NSStatusBar),一直是常驻应用必争之地。...,并且将它自动添加到状态栏)。...NSPopover 提供了在屏幕内容视图上显示额外信息内容一种方式(其实这个类似于在iPad开发是常见UIPopoverPresentationController),它定位相对与现有内容。...在ViewController添加popover属性,并在viewDidLoad中进行初始化和配置。 1.4 现在ViewController.m实现代码: ?...is nil.这个错误信息,是因为我们没有为popover设置一个可以显示内容视图控制,下面我们来创建一个NSViewController来管理popover内容视图: 1.5 添加SBPopViewController

    2.2K20

    C++ Qt开发:StandardItemModel数据模型组件

    数据模型组件通常会配合TableView等相关组件一起使用,首先绘制UI界面,界面包含顶部ToolBar组件,底部是一个TableView视图表格,最下方是一个PlainTextEdit文本框,如下图所示...model数据集进行绑定,当绑定后,模型数据发生变化则会自动刷新到View组件,我们就无需关心界面组件如何显示了,这个现实过程交给Model映射吧。...用于处理表格选择操作,并将它们关联到TableView组件上。...这个函数主要完成了从字符串列表获取数据并初始化到 TableView 模型过程,包括表头设置、数据提取和状态处理。...保存文件 接着我们来看下保存文件与预览TableView视图实现方法,其实保存文件与预览是一个功能,唯一区别是保存文件刷新到文件,而预览则是刷新到了PlainTextEdit文本框内,但其两个本质上是一个功能

    37010
    领券