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

Xamarin IOS TableView在While循环中不更新

Xamarin是一种跨平台移动应用开发框架,可以使用C#语言开发iOS、Android和Windows应用程序。在Xamarin中,TableView是一种用于显示列表数据的UI控件。而在你提到的问题中,Xamarin iOS TableView在While循环中不更新的原因可能是由于主线程被阻塞,导致UI界面无法及时更新。

为了解决这个问题,可以考虑使用异步编程模型来更新TableView。可以使用C#中的async和await关键字来实现异步操作。在While循环中,可以使用Task.Delay方法来模拟等待时间,然后使用InvokeOnMainThread方法来在主线程上更新TableView的数据源。

以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Threading.Tasks;
using UIKit;

public class MyViewController : UIViewController
{
    private UITableView tableView;
    private MyTableViewSource tableViewSource;

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        tableView = new UITableView(View.Bounds);
        tableViewSource = new MyTableViewSource();

        tableView.Source = tableViewSource;
        View.AddSubview(tableView);

        Task.Run(async () =>
        {
            while (true)
            {
                // 模拟异步操作
                await Task.Delay(1000);

                // 在主线程上更新TableView
                InvokeOnMainThread(() =>
                {
                    tableViewSource.UpdateData();
                    tableView.ReloadData();
                });
            }
        });
    }
}

public class MyTableViewSource : UITableViewSource
{
    private string[] data = { "Item 1", "Item 2", "Item 3" };

    public override nint RowsInSection(UITableView tableview, nint section)
    {
        return data.Length;
    }

    public override UITableViewCell GetCell(UITableView tableView, Foundation.NSIndexPath indexPath)
    {
        var cell = tableView.DequeueReusableCell("Cell");
        if (cell == null)
        {
            cell = new UITableViewCell(UITableViewCellStyle.Default, "Cell");
        }

        cell.TextLabel.Text = data[indexPath.Row];

        return cell;
    }

    public void UpdateData()
    {
        // 更新数据源
        // 这里可以根据实际需求更新data数组的内容
    }
}

在这个示例中,我们创建了一个MyViewController类,继承自UIViewController,并在ViewDidLoad方法中初始化了TableView和TableView的数据源MyTableViewSource。然后我们使用Task.Run方法创建了一个异步任务,在任务中使用Task.Delay模拟了每秒更新一次数据的操作,并使用InvokeOnMainThread方法在主线程上更新TableView的数据源和重新加载TableView。

这样,就可以在While循环中更新Xamarin iOS TableView了。当然,具体的实现方式还需要根据实际需求进行调整。

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

相关·内容

Java 中为什么推荐 while环中使用 sleep()

前言最近逛 CSDN 看到一篇文章,文章大意是说为什么环中推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...Demo { private static final boolean FLAG = true; public static void main(String[] args) { while...// do something }}上面的代码你可能会得到下面的警告:Call to ‘Thread.sleep()’ in a loop, probably busy-waiting// 循环中调用...方案是否合理记住一点,讨论方案永远不能脱离场景,没有一种方案可以适应所有的场景,我们永远只是探讨适合当前场景的方案。... Java AQS 等待获取锁和线程池任务为空等待新任务时,会使用等待和唤醒操作轮询机制 和 等待和唤醒 一般会结合使用,避免线程频繁的挂起和唤醒。

65330

使用 Xamarin 开发 iOS 键盘扩展(含网络访问)

你可以 Walterlv.CloudKeyboard 仓库中获得本文所述的全部源代码。 搭建环境 本文不会花篇幅来讲如何搭建 Xamarin iOS 开发的环境,不然这篇文章就没有重点。...但是你可以阅读:使用 Xamarin iOS 真机上部署应用进行调试 当然这是 Mac 版本的(毕竟我 Windows 上实际也没有成功真机调试过,我是 git 同步到 Mac 上用 Visual...\n"); 光标处删除前一个字: TextDocumentProxy.DeleteBackward(); 如果想要清空文本,则可以循环删除: while (TextDocumentProxy.HasText...(实际上我们只 KeyboardViewController.cs 中加了寥寥几行代码。) 本文涉及到搭建开发环境,涉及如何连接真机调试。...Keyboard In IOS… – Swift India – Medium 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/develop-ios-keyboard-extension-using-xamarin.html

2.2K10

《Motion Design for iOS》(三十八)

我自己的iPhone app Interesting中也使用了波浪形的动画。来看看我的app的动画并构建它。...因为我一个循环中,我可以同步地使用循环次数变量b来保持动画的时间,只需要操作每行的动画时间间隔即可。这可以确保每一行的动画之间都是同样的时间,来达到一个好的波浪形动作。这就是全部了!...的范围内,苹果有众多的框架管理了iOS繁多的界面表现。...但有很多种方法可以解决问题,也就是说,还有其他的不使用苹果的Core Animation框架的方式可以iOS app的屏幕上创建动作。 其中一个创建动画的方法最近获取了很多的关注。...查看完整合集:https://github.com/Cloudox/Motion-Design-for-iOS 查看作者首页

43520

iOS 事件处理机制与图像渲染过程

是一个接收处理异步消息事件的循环,一个循环中:等待事件发生,然后将这个事件送到能处理它的地方。...} __CFRunLoopDoBlocks(); } while (!stop && !...和UIView最大的不同是CALayer处理用户的交互。CALayer并不清楚具体的响应链。...比如一个动画是更改alpha值从0到1,那么逻辑树上此属性会被立刻更新为最终属性1,而在动画树上会根据设置的动画时间从0逐步变化到1); 渲染树(其属性值就是当前正被显示屏幕上的属性值); CADisplayLink...Core Animation每个runloop周期中自动开始一次新的事务,即使你不显式的用[CATransaction begin]开始一次事务,任何在一次runloop循环中属性的改变都会被集中起来

5.4K100

iOS开发之多表视图滑动切换示例(仿头条客户端)---优化篇

前几天发布了一篇iOS开发之多表视图滑动切换示例(仿"头条"客户端)的博客,之所以写这篇博客,是因为一位iOS初学者提了一个问题,简单的写了个demo做了个示范,让其基础上做扩展和改进。...被CocoaChina中iOS模块所收录实在出乎我的意料,链接地址(http://www.cocoachina.com/ios/20150706/12370.html),CocoaChina上看了下面的评论...今天的博客的内容是在上一篇博客iOS开发之多表视图滑动切换示例(仿"头条"客户端)做的优化和扩展,同时也会在gitHub上更新一下Demo的代码,废话不多说,开始今天博客的主题。   ...我是ScrollView到达相应的页数时进行tableView的移动和数据的刷新。...把新的代码更新到了GitHub上,优化还在继续,欢迎大家批评指正。   DemoGitHub上的分享地址:https://github.com/lizelu/SliderTabBar

2K70

iOSTableView小技巧

TableViewios开发中经常用到的控件,这里统一记录一下开发中遇到的常用小技巧,不断探索更新,也希望大家可以告诉我更多常用的小技巧啦~一起进步。...1、去除多余的列表线条 原始的TableView没有数据的行也会显示一条条的线条,不太美观,用一行代码可以解决,一般放在ViewDidLoad中 self.tableView.tableFooterView...= [[UIView alloc] init]; 2、选中列表条目后取消选中的背景颜色 处理的情况下,选中一行后,该行会保持被选中的背景色,一般我们希望其保持,而是一闪而过告知用户选中过就好了...,TableView的Delegate方法中实现: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath...滑动列表时收起键盘 一般列表都会伴随着搜索框或其他输入框,我们输入时弹出键盘,但是滑动列表时就表示我已经输入完毕了,希望键盘保持界面上,而是自动收起,同样是TableView的Delegate方法中实现

93730

深入浅出-iOS程序性能优化 (转载)

iOS应用是非常注重用户体验的,不光是要求界面设计合理美观,也要求各种UI的反应灵敏,我相信大家对那种一拖就卡卡卡的 TableView 应用没什么好印象。...iOS应用是非常注重用户体验的,不光是要求界面设计合理美观,也要求各种UI的反应灵敏,我相信大家对那种一拖就卡卡卡的 TableView 应用没什么好印象。...当进入后台 时,iOS会保存当前App的一个快照,以便之后合适的时候(装载view和数据时)呈现给用户以提高用户体验,因此进入后台时,应该避免屏幕上呈 现用户信息,以免泄露用户个人资料。...d) 不要更新UI或者执行大量消耗CPU或电池的代码。...12,如果一个方法一个循环次数非常多的循环中使用,进入循环前使用 methodForSelector 获取该方法 IMP,然后循环体中直接使用该 IMP。

75820

C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码

Xamarin的产品简化了针对多种平台的应用开发,包括iOS、Android、Windows Phone和Mac App。...例如(但不限于)iOS上的CoreMotion,PassKit和StoreKit; NFC和Android上的Google Play服务; Xamarin.Forms中创建UI界面有两种技术。...但是排除我们会需要用原生的APP,然而原生的APP开发,主流平台就少不了iOS、Android、Windows10 Phone(..嗯..这个,算主流吧?...(PCL),因为共享项目新建页面的时候有点问题,所以推荐 点击OK,我们就可以得到如下几个程序集 我们可以看到,第一个是可移植的,这里就是我们要编写代码的地方, 下面2个,一个安卓,一个IOS,如果你使用调试安卓...本系列源码地址:https://github.com/l2999019/DemoApp 不出意外..以后的内容,都会直接更新在这个项目里

5.1K61

异步,同步,阻塞,非阻塞程序的实现

以后这样了。 实现异步非阻塞是一个大命题,这里只从原理出发。我会慢慢修改这篇文章。 本文将从异步sleep的实现入手,来讲解异步非阻塞程序的原理。...如果是同步,线程会等待接受函数的返回值(或者轮函数结果,直到查出它的返回状态和返回值)。如果是异步,线程不需要做任何处理,函数执行完毕后会推送通知或者调用回调函数。...线程同步调用下,也能非阻塞(同步轮非阻塞函数的状态),异步下,也能阻塞(调用一个阻塞函数,然后函数中调用回调,虽然没有什么意义)。 下面,我会慢慢实现一个异步非阻塞的sleep。...,当状态更新后,在下次轮会触发生成器继续执行后面的动作。...上面的代码中,一个while环中timer的状态。由于timer存在于wait中。所以需要把timer“提取”出来。

7.5K10

C# Xamarin移动开发基础进修篇

如果您同样对本次分享课程 《C# Xamarin移动开发基础进修篇》感兴趣的话,那么请跟着阿笨一起学习吧! 废话不多说,直接上干货,我们生产干货,我们只是干货的搬运工。... Visual Studio 中使用 C# 或 F# 生成完全本机的 Android 应用。 Xamarin.iOS 为 .NET 开发人员提供了完整的 iOS SDK。... Visual Studio 中使用 C# 或 F# 生成完全本机的 iOS 应用。 Xamarin.Mac 为 .NET 开发人员提供了完整的 macOS SDK。...这里阿笨陪大家折腾了,我们直接上真机真环境上开启我们的Xamarin For Android移动开发之旅。...参考文章: 最新Android系统版本与API等级对应关系表 Android各个版本的名称和更新 ? SKD版本 ?

6K20

Flutter与Xamarin跨平台移动开发对比

例如,Kotlin和Java主要用于开发Android原生移动应用程序,而iOS开发人员则使用Objective-C和最近的Swift,您可以我们对这两种语言的比较中了解到。...但是当你想为Windows mobile开发应用程序时,Xamarin适合这些所有场景。 Flutter与32位系统设备兼容。...lutter iOS和Android结构 Xamarin中,C#代码被编译成机器代码,然后打包在.app中。...amarin iOS和Android架构 UI设计 虽然Xamarin使用本机UI组件是一件好事,但随着平台定期更新,它会带来成本,而框架可能需要更长时间才能适应新版本。...Xamarin还提供了实时重新加载功能,相当于Flutter中的热加载,它可以帮助开发人员修改XAML并在编译或部署应用程序的情况下“实时”查看结果。

3.5K20

浅析RunLoop原理及其应用

将英文拆解不难理解其实RunLoop表示一直在运行着的循环或者从上面的定义源码中可以看出就是一个do..while..循环。当启动一个iOS APP时主线程启动与其对应的RunLoop也已经开启。...子线程中,如果主动获取Runloop的话,那么子线程内部是不会创建Runloop的。 3.RunLoop的常用模式 ? RunLoop 的模式有五种。...RunLoopTableView中的应用(解决滑动卡顿问题)。 ? 如图代码展示,当加载高清大图渲染屏幕,而此时不得不在主线程操作,会引起滑动的卡顿。...tableview 加载 cell 时如果遇到多个耗时操作会有点卡顿。将耗时操作放到 DefaultMode 里只能解决滑动时流畅,但是停止时需要加载耗时,仍然会有卡顿的感觉。...所以这里可以再次优化,将模式改为kCFRunLoopCommonModes,这样的话滑动或者滑动都可以加载图片渲染屏幕,而且是不影响屏幕流畅性的基础上。如以下GIF: ?

87520

iOS逆向(8)-Monkey、Logos

/master/bin/md-update)" 安装/更新之后重启下Xcode再新建项目。...,比如iOS8加载group1,iOS9加载group2,如果部分中,默认所有代码名为「_ungrouped」的隐藏分组中。...我们现在要做的就是在这个页面的TableView的最后一行加上Cell,里面有个Switch,用于打开/关闭屏蔽广告功能(只是UI,这篇文章牵扯到屏蔽广告的具体实现,如果你需要,点个小心心,持续关注我哦...系列干货持续更新中(记得关注我哦): iOS逆向(1)-密码学(RSA) iOS逆向(2)-密码学(Hash&对称加密) iOS逆向(3)-APP重签名 iOS逆向(4)-代码注入,非越狱窃取微信密码...iOS逆向(5)-不知MachO怎敢说自己懂DYLD iOS逆向(6)-从fishhook看Runtime,Hook系统函数 iOS逆向(7)-LLDB,自制LLDB脚本,窜改微信红包金额 iOS

1.8K20

你可能需要为你的 APP 适配 iOS 11

本文介绍iOS11中UI方面做了哪些更新,有些更新可以为用户提供更加完美的体验,但也有的可能会给目前的APP带来异常bug 前言 前几天发现在做的APP iOS11 系统上动画有异常,在其他系统的设备上都是正常的...UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,Files这个APP中能够看到iOS11中UIKit’s Bars的一些新特性:浏览功能上的大标题视图...个数再加上几个,滑动时,tableView不停地得到新的cell,更新自己的contenSize,滑到最后的时候,会得到正确的contenSize。...滑动操作(Swipe Actions) iOS8之后,苹果官方增加了UITableVIew的右滑操作接口,即新增了一个代理方法(tableView: editActionsForRowAtIndexPath...总结 大概介绍了iOS 11的UI方面的一些更新,大部分内容都用代码测试过了,有些更新确实是很实用,可以适配下iOS 11,有的更新可能会给现有APP造成bug,所以学习下这些内容还是很有必要的。

1.6K60

小项目如何进行跨平台方案选型?

使用Ionic可以一套代码安卓端、iOS端、网站端、小程序端通吃。Cordova(Ionic)缺点也明显,终究是个Web,性能体验太差了!...XamarinXamarin是Cordova的老对手,Xamarin的产品简化了针对多种平台的应用开发,包括iOS和 Android。...总体比Cordova复杂多了,大致上分成几个部分:Xamarin.Android、Xamarin.iOSXamarin.Mac(后来才出现的)以及Xamarin.Forms。...在这一框架内,开发 Android 和 iOS 应用可以不用转到 Eclipse 或者额外购买 Mac 并使用 Xcode,而继续Visual Studio之中使用 C# 与 .NET Framework...缺点:稍微延迟支持最新的平台更新、对开源库的访问受限、Xamarin生态系统不大、与第三方库和工具的兼容性问题等等FlutterFlutter是近两年风很大的一款开源、跨平台移动端开发框架,由 Google

1.2K10

Xamarin 学习笔记 - 配置环境(Windows & iOS)

你可以一个Portable工程里面通过XAML加上C#或者使用Xamarin.Android或Xamarin.iOS构建表单,在这种情况下,我们需要用到特定的本地环境,比如说通过C#代码操纵iOS的Storyboard...设置环境 你可以以下文档中找到Windows或iOS所需的全部要求: https://developer.xamarin.com/guides/cross-platform/getting_started...Portable 类库允许你书写代码并生成可以不同平台下共享的类库,包括Xamarin.iOSXamarin.Android,以及Windows Phone。...,也就是安装在你iOS或者Android设备上的Xamarin Live Player应用程序。...Xamarin Live Player Visual Studio有一个强大的窗体预览工具,它应该在运行时显示视图,正如每个人都在抱怨的那样,它压根工作。

6.1K20
领券