菜鸟教程小白 发表于 2022-12-11 19:27:10

ios - 使用 XMSegmentedControl 更改了 TableViewCell


                                            <p><p>我想用 XMSegmentedControl(<a href="https://github.com/xaviermerino/XMSegmentedControl" rel="noreferrer noopener nofollow">https://github.com/xaviermerino/XMSegmentedControl</a>) 更改 tableviewcell 的数据,
我在 </p> 中使用 switch

<pre><code>func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int
</code></pre>

<p>,但它总是打印出来的</p>

<pre><code>fatal error: unexpectedly found nil while unwrapping an Optional value**,and say *segmentedControl1 is nil.
</code></pre>

<hr/>

<pre><code>let tin = [&#34;1&#34;,&#34;2&#34;,&#34;3&#34;,&#34;4&#34;]
let how = [&#34;one&#34;,&#34;two&#34;,&#34;three&#34;,&#34;four&#34;]
@IBOutlet weak var tableView: UITableView!

@IBOutlet weak var segmentedControl1: XMSegmentedControl!

override func viewDidLoad() {
    super.viewDidLoad()

    let segmentedControl3 = XMSegmentedControl(frame: CGRect(x: 0, y: 70, width: self.view.frame.width, height: 44), segmentTitle: [&#34;Hello&#34;, &#34;World&#34;, &#34;Three&#34;], selectedItemHighlightStyle: XMSelectedItemHighlightStyle.topEdge)
    segmentedControl3.backgroundColor = UIColor(red: 22/255, green: 150/255, blue: 122/255, alpha: 1)
    segmentedControl3.highlightColor = UIColor(red: 25/255, green: 180/255, blue: 145/255, alpha: 1)
    segmentedControl3.tint = UIColor.white
    segmentedControl3.highlightTint = UIColor.black
    self.view.addSubview(segmentedControl3)
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {

    var returnValue = 0

    switch(segmentedControl1.selectedSegment)
    {
    case 0 :
      returnValue = tin.count
    case 1 :
      returnValue = how.count
    default :
      break
    }
    return returnValue
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: &#34;Cell&#34;, for: indexPath)
    switch(segmentedControl1.selectedSegment)
    {
    case 0 :
      cell.textLabel?.text = tin
    case 1 :
      cell.textLabel?.text = how
    default :
      break
    }
    return cell
}
</code></pre>

<p>谁能帮我解决这个问题?</p>

<p>谢谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>用我的代码替换您的 <code>viewDidLoad()</code>。 </p>

<pre><code>override func viewDidLoad() {
    super.viewDidLoad()

   segmentedControl1 = XMSegmentedControl(frame: CGRect(x: 0, y: 70, width: self.view.frame.width, height: 44), segmentTitle: [&#34;Hello&#34;, &#34;World&#34;, &#34;Three&#34;], selectedItemHighlightStyle: XMSelectedItemHighlightStyle.topEdge)
    segmentedControl1.backgroundColor = UIColor(red: 22/255, green: 150/255, blue: 122/255, alpha: 1)
    segmentedControl1.highlightColor = UIColor(red: 25/255, green: 180/255, blue: 145/255, alpha: 1)
    segmentedControl1.tint = UIColor.white
    segmentedControl1.highlightTint = UIColor.black
    self.view.addSubview(segmentedControl1)
}
</code></pre>

<p>放入segmentControl的valuechenged方法</p>

<pre><code>DispatchQueue.main.async{
             self.ttblView.reloadData()
            }
</code></pre>

<p>您应用了错误的 segmentControl 。你把值放在 segmentedControl3 中,所以 segmentedControl1 给出 nil 。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 XMSegmentedControl 更改了 TableViewCell,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43292453/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43292453/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 XMSegmentedControl 更改了 TableViewCell